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'];
/** * Слушатель который обрабатывает на серверной стороне поступление файла * * @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; }