$dir = sprintf($_config['dir'], $user_obj->login); $cfile->_getImageSize($cfile->tmp_name); if ($cfile->image_size && in_array($cfile->image_size['type'], $_config['image_types'])) { if ($_config['minImageHeight'] && $cfile->image_size['height'] < $_config['minImageHeight'] || $_config['minImageWidth'] && $cfile->image_size['width'] < $_config['minImageWidth']) { $result['error'] = sprintf(STR_FTOSMAL, $_config['minImageWidth'], $_config['minImageHeight']); //sprintf('Изображение слишком маленькое. Минимальные размеры %d на %d точек.',$_config['minImageWidth'],$_config['minImageHeight']); } else { $filename = $cfile->MoveUploadedFile($dir); $error = $cfile->error; $error = is_array($error) ? $error : array($error); $cnt = count($error); if (!$filename || $cnt > 0) { $result['error'] = STR_FERR . ' ' . implode(' ', $error); //'Ошибка загрузки файла. ' } else { $fileinfo = $uploader->createFile($cfile); if (count($_config['params'])) { $err = $cfile->updateFileParams($_config['params']); } if (count($_config['thumbs'])) { foreach ($_config['thumbs'] as $thumb) { $thumb_cfile = $cfile->resizeImage($cfile->path . $thumb['prefix'] . $cfile->name, $thumb['width'], $thumb['height'], $thumb['option'], true); if (!$thumb_cfile) { $result['error'] = STR_FERR; //"Ошибка загрузки файла."; break; } $uploader->createFile($thumb_cfile); if (count($thumb['params'])) { $thumb_cfile->updateFileParams($thumb['params']); }
/** * Слушатель который обрабатывает на серверной стороне поступление файла * * @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; }