예제 #1
0
                 uploader::sremoveFiles($sess, $file_ids);
             }
             $result = array('success' => true);
         }
     }
     break;
     //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 default:
     $sess = __paramInit('string', NULL, 'sess', '');
     if (!strlen($sess)) {
         $result['error'] = STR_FERR;
         //'Ошибка загрузки файла.';
     } else {
         $uploader = new uploader($sess);
         $files_info = $uploader->getCountResource();
         $img_cnt = count($_config['thumbs']) + 1;
         $files_count = $files_info['count'] > 0 ? round($files_info['count'] / $img_cnt) : $files_info['count'];
         if ($files_count + 1 > $_config['max_files']) {
             $result['error'] = sprintf(STR_FMAX, $_config['max_files']);
             //"Максимальное количество файлов: {$_config['max_files']}.";
         } else {
             $cfile = new CFile($_FILES['qqfile']);
             $cfile->table = $_config['table'];
             $cfile->max_size = $_config['max_file_size'];
             $cfile->server_root = $_config['server_root'];
             $cfile->max_image_size = $_config['max_image_size'];
             $cfile->resize = $_config['resize'];
             $cfile->proportional = $_config['proportional'];
             $cfile->crop = $_config['crop'];
             $cfile->topfill = $_config['topfill'];
예제 #2
0
 /**
  * Слушатель который обрабатывает на серверной стороне поступление файла
  * 
  * @param string $resource  Сессия загрузчика
  * @return boolean
  */
 static function listener($resource)
 {
     $browser = '';
     $version = array();
     browserCompat($browser, $version);
     // Скрипт посылает в той кодировке в которой страница в IE, в остальных браузерах в UTF-8
     if ($browser != 'msie' && ((int) $version[1] != 8 || (int) $version[1] != 10)) {
         $_FILES = self::encodeCharset($_FILES, array('utf-8', 'cp1251'));
     }
     $validate = self::getValidationInfo(self::sgetTypeUpload($resource));
     if ($validate['is_auth'] && !get_uid(false)) {
         return array('success' => false, 'error' => 'Ошибка загрузки файлов');
     }
     if ($validate['is_admin'] && !hasPermissions('adm')) {
         return array('success' => false, 'error' => 'Ошибка загрузки файлов');
     }
     if ($validate['max_files'] == 1 && $validate['is_replace']) {
         // Удаляем старые файлы для замены на новые
         self::sclear($resource);
     }
     $_FILES['qqfile']['name'] = stripslashes(__paramValue('string', $_FILES['qqfile']['name']));
     $CFile = new CFile($_FILES['qqfile']);
     $CFile->table = 'file';
     $CFile->server_root = $validate['server_root'] === true ? true : false;
     $CFile->max_size = $validate['max_file_size'];
     $uploader = new uploader($resource);
     $resourceInfo = $uploader->getCountResource();
     if ($validate['imageOnly'] && strpos($_FILES['qqfile']['type'], 'image') === false) {
         $file['error'] = "Недопустимый формат файла";
     }
     if ($resourceInfo['count'] + 1 > $validate['max_files']) {
         $file['error'] = "Максимальное количество файлов: {$validate['max_files']}";
     }
     if ($resourceInfo['size'] + $CFile->size > $validate['max_file_size'] && $validate['is_total_size']) {
         $file['error'] = "Максимальный объем файлов: " . ConvertBtoMB($validate['max_file_size']);
     }
     if (in_array($CFile->getext(), $GLOBALS['disallowed_array'])) {
         $file['error'] = "Недопустимый формат файла";
     }
     if ($file['error']) {
         $file['success'] = false;
         return $file;
     } else {
         $CFile->MoveUploadedFile($validate['dir']);
         if ($validate['resize'] && ($CFile->image_size['height'] > $validate['imageHeight'] || $CFile->image_size['width'] > $validate['imageWidth'])) {
             $CFile = $CFile->resizeImage($CFile->path . $CFile->name, $validate['imageWidth'], $validate['imageHeight'], 'auto', true);
         }
     }
     $skipEncoding = false;
     if ($CFile->id) {
         // если заданы типы графических файлов
         if ($validate['imageTypes'] && (!$CFile->image_size['type'] || !in_array($CFile->image_size['type'], $validate['imageTypes']))) {
             $file['error'] = "Недопустимый формат файла";
         }
         // если задана максимальная высота
         if ($validate['maxImageHeight'] && $CFile->image_size['height'] > $validate['maxImageHeight']) {
             $file['error'] = "Превышена максимальная высота изображения";
         }
         // если задана максимальная ширина
         if ($validate['maxImageWidth'] && $CFile->imae_size['width'] > $validate['maxImageWidth']) {
             $file['error'] = "Превышена максимальная ширина изображения";
         }
         if ($file['error']) {
             $CFile->Delete($CFile->id);
             $file['success'] = false;
         } else {
             $file = $uploader->createFile($CFile);
             if ($validate['copy_table'] != '') {
                 $cremotefile = self::remoteCopy($CFile->id, $validate['copy_table'], mailer::FILE_DIR);
                 $file['path'] = $cremotefile->path;
                 $file['fname'] = $cremotefile->name;
             }
             $file['success'] = true;
         }
     } else {
         $file['success'] = false;
         $file['error'] = $CFile->error;
         if (is_array($file['error']) && count($file['error']) == 0 && $CFile->size == 0) {
             $file['error'] = "Пустой файл";
             $skipEncoding = true;
         }
     }
     $file['onComplete'] = self::getCallback(self::sgetTypeUpload($resource), $CFile, $_FILES['qqfile']['type']);
     $file['orig_name'] = self::cutNameFile($file['orig_name'], $validate['fname_length']);
     if (!$skipEncoding) {
         $file = self::encodeCharset($file);
     }
     return $file;
 }