Пример #1
0
 public function upload()
 {
     if (!isset($_POST['terms'])) {
         echo 'Перед загрузкой файлов необходимо прочитать и принять условия пользования.';
         die;
     }
     if (empty($_FILES['uploadFile']['tmp_name']) && empty($_POST['remote_url'])) {
         echo 'Выберите файл для загрузки!';
         die;
     }
     if (empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 52428800) {
         echo 'Размер файла превышает максимум!';
         die;
     }
     if (!empty($_FILES['uploadFile']['tmp_name'])) {
         if ($_FILES['uploadFile']['error'] === UPLOAD_ERR_INI_SIZE || $_FILES['uploadFile']['error'] === UPLOAD_ERR_FORM_SIZE) {
             echo 'Размер файла превышает максимум!';
             die;
         } elseif ($_FILES['uploadFile']['error'] === UPLOAD_ERR_PARTIAL) {
             echo 'Файл поврежден!';
             die;
         } elseif ($_FILES['uploadFile']['error'] === UPLOAD_ERR_NO_FILE) {
             echo 'Файл не был загружен!';
             die;
         } elseif ($_FILES['uploadFile']['error'] === UPLOAD_ERR_NO_TMP_DIR) {
             echo 'Отсутствует временная папка. Обратитесь к администратору.';
             die;
         } elseif ($_FILES['uploadFile']['error'] === UPLOAD_ERR_CANT_WRITE) {
             echo 'Ошибка при записи файла. Обратитесь к администратору.';
             die;
         } elseif ($_FILES['uploadFile']['error'] === UPLOAD_ERR_EXTENSION) {
             echo 'Загрузка файла была остановлена. Обратитесь к администратору.';
             die;
         }
         $fileName = strtolower(str_replace(' ', '_', $_FILES['uploadFile']['name']));
         $fileName = \Helpers\Data::toTranslite($fileName);
         $fileSize = $_FILES['uploadFile']['size'];
     }
     if (!empty($_POST['remote_url'])) {
         $checkURL = \Helpers\GUMP::is_valid($_POST, array('remote_url' => 'valid_url'));
         if (is_array($checkURL)) {
             echo $checkURL[0];
             die;
         }
         $fileSize = \Helpers\SimpleCurl::remotefileSize($_POST['remote_url']);
         if (is_numeric($fileSize) == FALSE || $fileSize == 0) {
             echo 'Не удалось определить размер удаленного файла.';
             die;
         }
         if ($fileSize > 52428800) {
             echo 'Размер удаленного файла превышает 50 МБ';
             die;
         }
         $fileName = array_pop(explode('/', $_POST['remote_url']));
         if (!preg_match('/.+\\.[a-z0-9]{2,}$/ui', $fileName)) {
             echo 'Неверный формат удаленного файла.';
             die;
         }
         $fileName = strtolower(\Helpers\Data::toTranslite($fileName));
     }
     $fileExtension = \Helpers\Document::getExtension($fileName);
     $fileType = \Helpers\Document::getFileType($fileExtension);
     $mimeType = $fileType . '/' . $fileExtension;
     $serverFileName = uniqid() . '_' . $fileName . '.txt';
     if (!empty($_SESSION['rf_user'])) {
         $userName = $_SESSION['rf_user'];
     } else {
         $userName = '******';
     }
     $currentDate = time();
     $uploadPath = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
     if (!empty($_FILES['uploadFile']['tmp_name'])) {
         if (!move_uploaded_file($_FILES['uploadFile']['tmp_name'], $uploadPath . $serverFileName)) {
             echo 'Ошибка при перемещении файла.';
             die;
         }
     }
     if (!empty($_POST['remote_url'])) {
         if (!copy($_POST['remote_url'], $uploadPath . $serverFileName)) {
             echo 'Не удалось загрузить файл с удаленного сервера.';
             die;
         }
     }
     $result = $this->_files->uploadFile($userName, $fileName, $serverFileName, $fileSize, $currentDate, $mimeType);
     if (ctype_digit($result)) {
         echo $result;
         die;
     }
 }