Загрузчик файлов и изображений
Зависимости
Данный компонент предназначен для загрузки файлов и изображений на сайте.
Настройки
<?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" )