Выгруженные файлы нужно проверить на корректность, как и любые другие данные форм. Например, вам нужно проверить, что:
файлы были на самом деле выгружены через HTTP-запрос методом POST, а не были просто скопированы из какого-либо каталога;
файлы были успешно выгружены (нулевой код ошибки);
имена файлов и/или их расширения допустимы (возможно, вы, например, хотите сохранять только JPEG-файлы и отклонять все остальные);
размер файла лежит в допустимом диапазоне (например, вы хотите гарантировать, что файл не слишком большой);
общее количество выгруженных на сервер файлов не превышает какой-то допустимый предел.
Для подобных проверок ZF3 предоставляет большое количество полезных валидаторов файлов (перечислены в таблице 10.1).
Эти классы валидаторов принадлежат компоненту Zend\Validator
и "живут" в пространстве имен Zend\Validator\File
.
Имя класса | Псевдоним | Описание |
---|---|---|
Count |
FileCount |
Проверяет, находится ли количество файлов в заданном диапазоне (min, max). |
WordCount |
FileWordCount |
Подсчитывает количество слов в файле и проверяет, лежит ли оно в заданном диапазоне. |
Upload |
FileUpload |
Осуществляет проверки безопасности для гарантии того, что все файлы были выгружены на сервер через HTTP-запрос методом POST и не было ошибок выгрузки. |
UploadFile |
FileUploadFile |
Осуществляет проверки безопасности для гарантии того, что файл был выгружен на сервер через HTTP-запрос методом POST и не было ошибок выгрузки. |
Size |
FileSize |
Проверяет, лежит ли размер файла в заданном диапазоне. |
FilesSize |
FileFilesSize |
Проверяет, что суммарный размер всех файлов лежит в заданном диапазоне. |
Extension |
FileExtension |
Проверяет, что расширение файла принадлежит списку допустимых расширений. |
ExcludeExtension |
FileExcludeExtension |
Проверяет, что расширение файла НЕ принадлежит набору расширений. |
MimeType |
FileMimeType |
Проверяет, что MIME-тип принадлежит списку допустимых MIME-типов. |
ExcludeMimeType |
FileExcludeMimeType |
Проверяет, что MIME-тип файла НЕ принадлежит списку MIME-типов. |
IsImage |
FileIsImage |
Проверяет, что файл является изображением (JPEG, PNG, GIF и т.д.) |
ImageSize |
FileImageSize |
Проверяет, что размерность файла изображения лежит в заданном диапазоне. |
Exists |
FileExists |
Проверка на то, что файл существует на диске. |
NotExists |
FileNotExists |
Проверка на то, что файл не существует на диске. |
IsCompressed |
FileIsCompressed |
Проверяет, что файл является архивом (ZIP, TAR, и т.д.) |
Hash |
FileHash |
Проверяет, что содержимое файла соответствует заданному(-ым) хэшу(-ам). |
Crc32 |
FileCrc32 |
Проверяет, что содержимое файла имеет заданную контрольную сумму CRC32. |
Sha1 |
FileSha1 |
Проверяет, что содержимое файла имеет заданный SHA1-хэш. |
Md5 |
FileMd5 |
Проверяет, что содержимое файла имеет заданный MD5-хэш. |
Как видите из таблицы, валидаторы можно приблизительно разделить на следующие группы:
42) Хэш файла используется для проверки целостности данных файла (например, для гарантии того, что данные файла не были повреждены). Существует несколько хэш-алгоритмов (MD5, SHA-1, CRC32 и др.)
Обратите внимание, что поскольку валидаторы файлов "живут" в пространстве имен
Zend\Validator\File
, их псевдонимы (которые вы используете при создании валидатора с помощью фабрики) начинаются с префиксаFile
. Например, у валидатораIsImage
псевдонимFileIsImage
.
Мы покажем, как использовать некоторые из этих валидаторов файлов в примере галереи изображений Image Gallery позже в этой главе.