/** * Упрощённая процедура загрузки файла * @param string $element_name название элемента массива $_FILES для загрузки * @param string $upload_location каталог размещения загруженного файла * @param array $params массив расширенных парамтеров загрузки * string new_name - новое имя для файла * string new_extension - переименовать расширение файла * */ public static function easy_upload($element_name, $upload_location, array $params = array()) { $file_name = $_FILES[$element_name]['name']; //Если нужно сменить имя файла if (isset($params['new_name'])) { $file_name = $params['new_name'] . '.' . substr($file_name, strrpos($file_name, '.') + 1); } else { //иначе - очищаем исходное имя файла от мусора $file_name = joosFile::make_safe_name($file_name); } //директория загрузки $upload_location = rtrim($upload_location, '/'); if (!joosFolder::is_writable($upload_location)) { throw new joosUploadLibrariesException('Каталог :upload_location недоступен для создания подкаталогов и записи', array(':upload_location' => $upload_location)); } //если её нет, создаём is_dir($upload_location) ? null : mkdir($upload_location, 0755, true); //перемещаем файл в директорию назначения $file_base_location = $upload_location . DS . $file_name; $success = move_uploaded_file($_FILES[$element_name]['tmp_name'], $file_base_location); //получаем путь файла для http $file_live_location = str_replace(JPATH_BASE, '', $upload_location); $file_live_location = str_replace("\\", DS, $file_live_location); return array('success' => $success, 'file_location' => $file_live_location, 'file_name' => $file_name, 'file_live_location' => sprintf('%s%s/%s', JPATH_SITE, $file_live_location, $file_name), 'file_base_location' => sprintf('%s%s/%s', JPATH_BASE, $file_live_location, $file_name)); }
/** * Создание безопасного имени для каталога * Работает по принципу joosFile::get_safe_name, но из названия дополнительно удаляются точки * * @param string $location полный путь к каталогу * * @return string безопасное имя для каталога */ public static function get_safe_name($location) { $location = str_replace('.', '-', $location); return joosFile::make_safe_name($location); }