Компоненты библиотеки/BA_FileUploader.md
Что такое BA_FileUploader?
Класс для загрузки файлов на сервер.
Подключение
include(__DIR__.'/classes/BA_FileUploader.php');
use classes\BA_FileUploader;
$uploader = new BA_FileUploader();
В include передаётся путь до файла.
В use указывается пространство имён, в котором хранятся классы. Изначально в данной библиотеке классы хранятся в каталоге “classes” и относятся к пространству имён “classes”.
Методы
setUploadDir
Вызов:
$uploader->setUploadDir($uploadDir);
Устанавливает имя каталога для загрузки файлов на сервер.
Посмотреть значение, установленное данным методом можно с помощью getUploadDir().
setUseTemporaryFolder
Вызов:
$uploader->setUseTemporaryFolder($useTemporaryFolder);
Устанавливает, будет-ли внутри каталога загрузок, заданного методом setUploadDir создаваться еще временный каталог с рандомным именем, куда непосредственно разместятся файлы, загруженные в текущую сессию.
$useTemporaryFolder - любое boolean-совместимое значение
По умолчанию опция включена.
Посмотреть значение, установленное данным методом можно с помощью getUseTemporaryFolder();
Посмотреть само название временного каталога можно с помощью getTemporaryDir(), но только после загрузки файлов на сервер. Временный каталог создаётся непосредственно перед загрузкой, если установлена соответствующая опция.
setFiles
Вызов:
$uploader->setFiles($files);
В качестве параметра принимает массив $_FILES или аналогичный.
Устанавливает, какие файлы должны быть загружены на сервер.
Посмотреть значение, установленное этим методом можно с помощью getFiles().
setMaxFileSize
Вызов:
$uploader->setMaxFileSize($maxFileSize);
Устанавливает максимальный размер загружаемого файла в байтах. Файлы большего размера грузиться не будут, даже если заданы методом setFiles.
Посмотреть значение: getMaxFileSize().
setTypeMode
Вызов:
$uploader->setTypeMode($usedTypeMode);
Устанавливает, в каком режиме класс будет проверять тип файла на допустимость:
- “Extentions” (по умолчанию) - для проверки будет извлекать расширение из имени файла.
- “Types” - проверяет тип данных из поля “type” переданного массива
Допустимые значения типов задаются методами setAllowedType и setAllowedTypes
Посмотреть значение можно с помощью getTypeMode()
setAllowedType
Вызов:
$uploader->setAllowedType($key, $type)
Оба параметра строкового типа.
Устанавливает тип $type в качестве допустимого для поля $key.
Пример (проверка по расширению):
$uploader
->setTypeMode("Extention")
->setAllowedType("image", "jpg");
Пример (проверка по заявленному типу):
$uploader
->setTypeMode("Type")
->setAllowedType("image", "image/jpg");
setAllowedTypes
Вызов:
$uploader->setAllowedType($key, $types)
$key - строка. Название поля.
$types - массив. В качестве ключа массива - строка с типом или расширением файла. Значение - true (разрешить) или false (запретить).
Пример:
$uploader1
->setAllowedTypes('files', array('image/jpg'=>true,'application/pdf'=>true,' application/zip'=>true));
$uploader2
->setAllowedTypes('document', array('pdf'=>true,'doc'=>true,'docx'=>true));
Посмотреть разрешённые типы можно методом getAllowedTypes();
clearAllowedTypes
Вызов:
$uploader->clearAllowedTypes($key);
$key - строковое значение. Имя поля.
Очищает список разрешённых типов файла - разрешаются все типы.
Если $key не указан, список очищается для всех полей, если указан - все типы разрешаются только для поля $key.
Пример 1 (разрешить все типы в поле files):
$uploader->clearAllowedTypes('files');
Пример 2 (разрешить все типы файлов во всех полях):
$uploader->clearAllowedTypes();
setRenameFiles
Вызов:
$uploader->setRenameFiles($renameFiles);
Устанавливает режим переименования файлов при загрузке.
$renameFiles - строка.
Возможные значения:
- “random” - случайное имя, состоящее из цифр
- “translit” - транслитерация имени файла
- Любое другое значение - файлы не переименовываются
uploadFiles
Вызов:
$uploader->uploadFiles($reseivedFiles);
Проверяет и загружает полученные файлы в папку, заданную методом setUploadDir
$reseivedFiles (необязательный параметр) - массив с данными о файлах (например глобальный $_FILES). Можно не указывать, если файлы заданы заранее методом setFiles.
Перед загрузкой проверит файлы на допустимый размер и тип файла.
Данные о загруженных файлах можно получить методами getUploadedFiles() и getUploadedArray().
clearUploads
Без параметров.
Удаляет файлы, загруженные на сервер в текущую сессию. Так-же удаляет созданную временную папку.
Может применяться, когда работа над файлами уже завершена и они больше не нужны.
getUploadedFiles
Без параметров.
Возвращает массив с данными загруженных файлов. Файлы сгруппированы согласно их полям.
Пример возвращаемого массива:
‘images’=>[ 0=>[‘name’=>‘cat.jpg’, ‘type’=>‘image/jpg’ …] 1=>[‘name’=>‘dog.png’, ‘type’=>‘image/png’ …] ], ‘document’=>[ 0=>[‘name’=>‘report.pdf’, ‘type’=>‘application/pdf’ …] ]
getUploadedArray
Без параметров.
Возвращает массив с данными загруженных файлов без группировки по исходным полям.
Пример возвращаемого массива:
[ 0=>[‘name’=>‘cat.jpg’, ‘type’=>‘image/jpg’ …] 1=>[‘name’=>‘dog.png’, ‘type’=>‘image/png’ …] 2=>[‘name’=>‘report.pdf’, ‘type’=>‘application/pdf’ …] ]
Цепной вызов методов
Следующие методы возвращают указатель на свой объект, а значит - их можно вызывать цепочкой:
- setAllowedType
- setAllowedTypes
- clearAllowedTypes
- setTypeMode
- setMaxFileSize
- setUploadDir
- setUseTemporaryFolder
- setRenameFiles
- setFiles
Пример кода
$uploader = new BA_FileUploader();
$uploader
->setFiles($_FILES)
->setUploadDir(__DIR__.DIRECTORY_SEPARATOR.'uploads')
->setRenameFiles('random')
->setAllowedTypes('files', array('jpg'=>true,'png'=>true,'gif'=>false))
->setAllowedTypes('document', array('pdf'=>true,'doc'=>true,'txt'=>false))
->setAllowedTypes('table', array('xls'=>true,'xlsx'=>true));
$uploader->uploadFiles();
$uploaded = $uploader->getUploadedArray();