Загрузчик файлов и изображений
Зависимости
Данный компонент предназначен для загрузки файлов и изображений на сайте.
Настройки
<?php /** * Дефолтный конфиг файла * * @author Zmi и GYL */ $g_config['uploader']['default_config'] = array ( // Путь до папки, куда будет загружен файл 'upload_path' => BASEPATH . 'upl/files/', // Типы MIME, описывающие типы файлов, разрешенных для загрузки 'allowed_types' => 'txt|zip|doc|docx|pdf|bmp|gif|jpeg|jpg|png|rar|tiff', // Максимальный размер файла (в килобайтах). Если ограничения нет, то пишем 0 'max_size' => '5000', // Если TRUE, и в папке уже есть файл с тем же именем, иначе к имени заливаемого файла добавится порядковый номер 'overwrite' => false, // Если TRUE, то имя файла преобразуется в случайным образом сгенерированную строку 'encrypt_name' => true, // Если TRUE, то все пробелы в имени файла будут преобразованы в знак подчеркивания 'remove_spaces' => true, // Максимальная ширина картинки в пикселях. 0 — не ограниченно 'max_width' => '2000', // Максимальная высота картинки в пикселях. 0 — не ограниченно. 'max_height' => '2000', // Cписок thumb-ов который нужно сгенерировать. 'thumbs' => array( // path можно не указывать. Тогда он: $config['upload_path'] . $t['width'] . '_' . $t['height'] . '/' // array('width' => 50, 'height' => 50, 'path' => BASEPATH . 'upl/files/50_50/'), // array('width' => 100, 'height' => 100, 'path' => BASEPATH . 'upl/files/100_100/') ) ); ?>
Для загрузки файлов использется функция Upload(). Первый параметр в ней обязателен - это имя input-а. Второй не обязателен и задает конфигурацию.
Для конфигурации не обязательно задавать все поля. Не заданные поля будут взяты из основного конфига. Пример:
$uploader = new Uploader(); // Пример 1 $uploader->Upload('doc'); // Пример 2 $uploader->Upload( 'photo', array ( 'upload_path' => BASEPATH . 'upl/photos/', 'allowed_types' => 'gif|jpg|png|bmp', 'encrypt_name' => true ) );
Рассмотрим более полный пример работы компонента:
<?php $uploader = new Uploader(); $msg = ""; if (Post('apply')) { if ($uploader->HasUpload('photo')) { $isUpload = $uploader->Upload ( 'photo', array ( 'upload_path' => BASEPATH . "upl/photos/", 'allowed_types' => 'gif|jpg|png|bmp', 'encrypt_name' => true, // Сказать по чести создавать миниатюры сразу не лучший метод // Более правильным будет подход переоределение пути запроса до картинки на скрипт и генерация в нём миниатюры с сохранением 'thumbs' => array ( array('width' => 128, 'height' => 128, 'path' => BASEPATH . "upl/photos/128_128/") ) ) ); $msg = $isUpload ? MsgOk("File has been uploaded as: " . $uploader->GetInf('file_name')) : MsgErr("Can't upload file (Error: " . implode(", ", $uploader->Errors()) . ")"); } } ?>
<form action="<?= GetCurUrl()?>" method="post" <?= Uploader::FORM_LOAD?>> <?= $msg?> <input type="hidden" name="apply" value="1" /> <input type="file" name="photo" /> <button>Upload</button> </form>
Так же детальнее рассмотрим методы класса и возвращаемые им параметры:
- Upload($field, $config = array()) - Загрузка файла/изображения
- HasUpload($field) - Проверяет есть ли загрузка в $_FILES для переданного имя поля
- Errors() - Возврашает текст ошибки если она была
-
GetInf($par = NULL) - Возвращает значение параметра или массив всех возможных параметров об загруженном файле:
- file_name - Имя загруженного файла, включая расширение
- file_type - MIME-тип файла
- file_path - Абсолютный путь к файлу на сервере
- full_path - Абсолютный путь до файла на сервере, включая имя файла
- raw_name - Имя файла без расширения
- orig_name - Первоначальное имя файла. Используется только при включенной опции encrypted_name
- file_ext - Расширение файла с точкой
- file_size - Размер файла в килобайтах
- is_image - Проверка на предмет является ли файл изображением. 1 = изображение. 0 = нет
- image_width - Ширина изображения
- image_heigth - Высота изображения
- image_type - Тип изображения. Как правило - расширение файла без точки
- image_size_str - Строка, включающая в себя параметры width и height. Полезно использовать внутри тэга img
Array ( [file_name] => mypic.jpg [file_type] => image/jpeg [file_path] => /path/to/your/upload/ [full_path] => /path/to/your/upload/mypic.jpg [raw_name] => mypic [orig_name] => mypic.jpg [file_ext] => .jpg [file_size] => 22.2 [is_image] => 1 [image_width] => 800 [image_height] => 600 [image_type] => jpeg [image_size_str] => width="800" height="200" )