A free and open-source book on ZF3 for beginners


10.5. Фильтрация выгружаемых на сервер файлов

Zend Framework 3 предоставляет несколько фильтров, предназначенных для "преобразования" полей файла. Классы этих фильтров (перечислены в таблице 10.2) принадлежат компоненту Zend\Filter и "живут" в пространтсве имен Zend\Filter\File.

Таблица 10.2. Стандартные фильтры файлов
Имя класса Псевдоним Описание
Rename FileRename Переименовывает/перемещает произвольный файл.
RenameUpload FileRenameUpload Переименовывает/перемещает выгруженный файл с проверками безопасности.
Encrypt FileEncrypt Зашифровывает заданный файл и сохраняет содержимое зашифрованного файла.
Decrypt FileDecrypt Дешифрует заданный файл и сохраняет содержимое дешифрованного файла.
LowerCase FileLowerCase Переводит содержимое файла в нижний регистр.
UpperCase FileUpperCase Переводит содержимое файла в верхний регистр.

Как видите из таблицы, валидаторы можно разделить на следующие группы:

Обратите внимание, что поскольку фильтры файлов "живут" в пространстве имен Zend\Filter\File, их псевдонимы (которые вы используете при создании фильтра с помощью фабрики) начинаются с префикса File. Например, у фильтра RenameUpload псевдоним FileRenameUpload.

Фильтры Encrypt and Decrypt позволяют применять к выгруженным на сервер файлам различные алгоритмы шифрования/дешифрования (выбранный алгоритм можно добавить, указав определенный адаптер). Фильтры LowerCase и UpperCase используются для перевода текста соответственно в нижний и верхний регистры 43.

43) По мнению автора, описанные выше четыре фильтра не особо полезны при работе с выгруженными на сервер файлами, так как необходимость шифрования выгруженного файла или его перевода в нижний (или верхний) регистр возникает довольно редко.

Фильтр Rename позволяет переименовать и/или переместить произвольный файл (не только выгруженные на сервер файлы). Он внутренне использует PHP-функцию rename(), поэтому, в целом, использовать этот фильтр с выгруженными файлами не рекомендуется из соображений безопасности.

Фильтр RenameUpload выглядит гораздо полезнее остальных, так как он позволяет инкапсулировать вызов функции move_uploaded_file() и переместить/переименовать файл из временного хранилища в его постоянный каталог. Мы покажем, как использовать фильтр RenameUpload в примере галереи изображений Image Gallery позже в этой главе.


Top