Компоненты библиотеки/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();