Содержание


Классы валидации файлов


File Validation Classes, Валидация, ЗФ2, Zend Framework 2, ZF2, ру, ru




Zend Framework поставляется с набором классов, предназначенных для валидации файлов, такой, как проверка размера файла, или проверку CRC (циклического избыточного кода, это улучшенный алгоритм проверки контрольной суммы).

 

Примечание

Все валидаторы файлов поддерживают метод filter() с аргументом либо в виде строки, содержащей путь к файлу, либо массивом $_FILES. Если передан массив $_FILES, для определения пути к файлу используется ключ tmp_name.

 

Crc32
(вариант сyclic redundancy check, циклического избыточного кода)

 

Zend\Validator\File\Crc32 позволяет проверить, совпадает ли хэш содержимого заданного файла с предоставленным хэшем (хэшами) crc32. Это подкласс валитатора хэшей, предназначенный для обеспечения удобной проверки, поддерживающей только алгоритм crc32.

 

Примечание

 

Для этого валидатора требуется Hash расширение PHP c алгоритмом crc32.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

hash (строка) хэш для проверки файлов.

 

Примеры использования

// Имеет ли файл заданный хэш?
$validator = new \Zend\Validator\File\Crc32('3b3652f');
// Либо проверить несколько хэшей для файла
$validator = new \Zend\Validator\File\Crc32(array('3b3652f', 'e612b69'));
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
    // файл валиден
}

Публичные методы

 

getCrc32()

Вернет текущий набор хэшей crc32.

Тип возвращаемого значения: array

 

 

 addCrc32(string|array $options)

Добавляет хэш crc32 для одного или нескольких файлов во внутренний набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

 setCrc32(string|array $options)

Устанавливает хэш crc32 для одного или нескольких файлов. Удаляет все ранее установленные хэши.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

 

 

ExcludeExtension
(недопустимое расширение)

 

Zend\Validator\File\ExcludeExtension проверяет расширение файла. Он будет утверждать false, если заданный файл имеет определенное расширение.

 

Этот валидатор обратно зависим от валидатора Extension.

 

Пожалуйста, обратитесь к документации по валидатору Extension для уточнения параметров и примеров использования.

 

 

 

 

ExcludeMimeType
(недопустимые mime типы)

 

Zend\Validator\File\ExcludeMimeType проверяет MIME типыфайлов. Он будет утверждать false, если заданный файл соответствует одному из определенных MIME типов.

 

Этот валидатор обратно зависим от валидатора MimeType.

 

Пожалуйста, обратитесь к документации по валидатору MimeType для уточнения параметров и примеров использования.

 

 

 

 

Exists
(существование)

 

Zend\Validator\File\Exists проверяет наличие файлов в указанном каталоге.

 

Этот валидатор обратно зависим от валидатора NotExists.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

directory (string|array)

 

Строка с разделителеми в виде запятой (или массив) со списком каталогов.

 

Примеры использования

// Разрешает только существующие файлы для обоих каталогов
$validator = new \Zend\Validator\File\Exists('/tmp,/var/tmp');
// ...или нотация в виде массива
$validator = new \Zend\Validator\File\Exists(array('/tmp', '/var/tmp'));
// Выполнить проверку
if ($validator->isValid('/tmp/myfile.txt')) {
    // файл валиден
}
 

Примечание

 

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

 

 

 

 

Extension
(расширение)

 

Zend\Validator\File\Extension проверяет расширение файлов. Он будет утверждать true, если заданный файл имеет одно из указанных расширений.

 

Этот валидатор обратно зависим от валидатора ExcludeExtension.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

extension (string|array)

Строка с разделителями в виде запятой (или массив) со списком расширений для проверки.

case (boolean) по умолчанию: "false"

Должно ли сравнение расширений быть чувствительным к регистру.

 

Примеры использования

// разрешить файлы с расширениями 'php' или 'exe' 
$validator = new \Zend\Validator\File\Extension('php,exe');
// ...или нотация в виде массива
$validator = new \Zend\Validator\File\Extension(array('php', 'exe'));
// Тестирование, чувствительное к регистру
$validator = new \Zend\Validator\File\Extension(array('php', 'exe'), true);
// Выполнить проверку
if ($validator->isValid('./myfile.php')) {
    // файл валиден
}
 

Публичные методы

 

 addExtension(string|array $options)

Добавляет расширение (расширения) с помощью строки, с разделителями в виде запятой, либо массива.

 

 

 

 

Hash
(хэш)

 

Zend\Validator\File\Hash позволяет проверить, соответствует ли хэш содержимого заданного файла прилагаемому хэшу (хэшам) и алгоритму (алгоритмам).

 

Примечание

 

Для этого валидатора необходимо Hash расширение PHP. Список поддерживаемых алгоритмов хэширования может быть получен с помощью функции hash_algos().

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

hash (string)

Хэш для проверки файла.

algorithm (string) по умолчанию: "crc32"

Алгоритм, используемый для проверки хэширования.

 

Примеры использования

// Имеет ли файл заданный хэш?
$validator = new \Zend\Validator\File\Hash('3b3652f', 'crc32');
// Либо проверить несколько хэшей для файла
$validator = new \Zend\Validator\File\Hash(array('3b3652f', 'e612b69'), 'crc32');
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
   // file is valid
}
 

Публичные методы

 

getHash()

Возвращает текущий набор хэшей.

Тип возвращаемого значения: array

 

 

addHash(string|array $options)

Добавляет хэш для одного или нескольких файлов во внутренний набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

setHash(string|array $options)

Устанавливает хэш для одного или нескольких файлов. Удаляет предыдущий набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

 

 

ImageSize
(размер изображения)

 

Zend\Validator\File\ImageSize проверяет размер файлов изображения. Для проверки могут быть установлены минимальные и / или максимальные размеры.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

minWidth (int|null) по умолчанию: null

minHeight (int|null) по умолчанию: null

maxWidth (int|null) по умолчанию: null

maxHeight (int|null) по умолчанию: null

 

Чтобы избежать проверки определенного измерения, соответствующий параметр должен быть установлен в null.

 

Примеры использования

// Лежит ли размер изображения в диапазоне между 320x200 (min) и 640x480 (max) ?
$validator = new \Zend\Validator\File\ImageSize(320, 200, 640, 480);
 
// ...или нотация в виде массива
$validator = new \Zend\Validator\File\ImageSize(array(
    'minWidth' => 320, 'minHeight' => 200,
    'maxWidth' => 640, 'maxHeight' => 480,
));
 
// Равен ли, либо больше ли размер изображения 320x200?
$validator = new \Zend\Validator\File\ImageSize(array(
    'minWidth' => 320, 'minHeight' => 200,
));
 
// Равен ли, либо меньше ли размер изображения 640x480?
$validator = new \Zend\Validator\File\ImageSize(array(
    'maxWidth' => 640, 'maxHeight' => 480,
));
 
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.jpg')) {
    // файл валиден
}
 

Публичные методы

 

getImageMin()

Возвращает минимальный размер (ширина и высота).

Тип возвращаемого значения: array

 

 

getImageMax()

Возвращает максимальный размер (ширина и высота).

Тип возвращаемого значения: array

 

 

 

 

IsCompressed
(является ли сжатым)

 

Zend\Validator\File\IsCompressed проверяет, является ли файл сжатым архивом, таким, как zip или gzip. Этот валидатор основан на валидаторе MimeType, и поддерживает те же методы и параметры.

 

Список MIME типов сжатых файлов можно найти в исходном коде.

 

Пожалуйста, обратитесь к документации по валидатору MimeType для уточнения параметров и публичных методов.

 



Примеры использования
$validator = new \Zend\Validator\File\IsCompressed();
if ($validator->isValid('./myfile.zip')) {
    // файл валиден
}
 

IsImage
(является ли изображением)

 

Zend\Validator\File\IsImage проверяет, является ли файл изображением, таким, как jpg или png. Этот валидатор основан на валидаторе MimeType, и поддерживает те же методы и параметры.

 

Пожалуйста, обратитесь к документации по валидатору MimeType для уточнения параметров и публичных методов.

 


Примеры использования

$validator = new \Zend\Validator\File\IsImage();
if ($validator->isValid('./myfile.jpg')) {
    // файл валиден
}
 

Md5

 

Zend\Validator\File\Md5 позволяет проверить, совпадает ли хэш содержимого заданного файла с прилагаемым хэшем (хэшами) md5. Это подкласс валитатора хэшей, предназначенный для обеспечения удобной проверки, поддерживающей только алгоритм md5.

 

Примечание

 

Для этого валидатора требуется Hash расширение PHP c алгоритмом md5.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

hash (string)

Хэш для проверки.

 

Примеры использования

// Имеет ли файл заданный хэш?
$validator = new \Zend\Validator\File\Md5('3b3652f336522365223');
// Либо проверить несколько хэшей для файла
$validator = new \Zend\Validator\File\Md5(array(
    '3b3652f336522365223', 'eb3365f3365ddc65365'
));
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
    // файл валиден
}
 

Публичные методы

 

getMd5()

Возвращает текущий набор хэшей md5.

Тип возвращаемого значения: array

 

 

addMd5(string|array $options)

Добавляет хэш md5 для одного или нескольких файлов во внутренний набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

setMd5(string|array $options)

Устанавливает хэш md5 для одного или нескольких файлов. Удаляет предыдущий набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

 

 

MimeType
(mime тип)

 

Zend\Validator\File\MimeType проверяет MIME файлов. Он будет утверждать true, если заданный файл соответствует одному из определенных MIME типов.

 

Этот валидатор обратно зависим от валидатора ExcludeMimeType.

 

Примечание

 

Этот компонент будет использовать расширение FileInfo, если оно доступно. В противном случае, он будет деградировать до функции mime_content_type(). И если вызов функции не удастся, он будет использовать MIME тип, заданный HTTP. Вы должны знать о возможных проблемах безопасности, в случае, если FileInfo или mime_content_type() не доступны. MIME тип, заданный HTTP не является безопасным, и им легко манипулировать.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры

mimeType (string|array)

Строка с разделителями в виде запятых или массивом для проверки MIME типов.

magicFile (string|null) по умолчанию: константа "MAGIC"

Указывает расположение magicfile для использования. По умолчанию будет использовано значение константы MAGIC.

enableHeaderCheck (boolean) поумолчанию: "false"

Проверить информацию HTTP для типа файла в случае, если расширения fileInfo или mimeMagic недоступны.

 

Примеры использования

// Разрешить только файлы 'gif' или 'jpg'
$validator = new \Zend\Validator\File\MimeType('image/gif,image/jpg');
 
// ...или нотация с помощью массива
$validator = new \Zend\Validator\File\MimeType(array('image/gif', 'image/jpg'));
 
// ... или ограничить целой группой типов
$validator = new \Zend\Validator\File\MimeType(array('image', 'audio'));
 
// Использовать другой magicFile
$validator = new \Zend\Validator\File\MimeType(array(
    'image/gif', 'image/jpg',
    'magicFile' => '/path/to/magicfile.mgx'
));
 
// Использовать информацию HTTP о типе файла
$validator = new \Zend\Validator\File\MimeType(array(
    'image/gif', 'image/jpg',
    'enableHeaderCheck' => true
));
 
// Выполнить валидацию
if ($validator->isValid('./Возвращает максимальный размер (ширина и высота)./span (boolean) поумолчанию: )/spanmyfile.jpg')) {
    // файл валиден
}
&ncolor:#009900• span style=/spancolor:#000088bsp;

Предупреждение

 

Разрешение групп MIME типов будет допускать все члены этой группы, даже если ваше приложение не поддерживает их. Если вы разрешите ‘image’, вы тем самым допустите ‘image/xpixmap’ и ‘image/vasa’, что может привести к определенным проблемам.

 

 

 

 

NotExists
(не существует)

 

Zend\Validator\File\NotExists проверяет наличие файла в указанном каталоге.

 

Этот валидатор обратно зависим от валидатора Exists.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

directory (string|array)

Строка с разделителями в виде запятой (или массив) со списком каталогов.

 

Примеры использования

// Разрешает только файлы, не расположенные в одном из указанных каталогов
$validator = new \Zend\Validator\File\NotExists('/tmp,/var/tmp');
 
// ...или с нотацией в виде массива
$validator = new \Zend\Validator\File\NotExists(array('/tmp', '/var/tmp'));
 
// Выполнить проверку
if ($validator->isValid('/home/myfile.txt')) {
    // файл валиден
}
 

Примечание

 

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

 

 

 

 

Sha1
(алгоритм криптографического хеширования 1)

 

Zend\Validator\File\Sha1 позволяет проверить, совпадает ли хэш содержимого заданного файла с предоставленным хэшем (хэшами) sha1. Это подкласс валитатора хэшей, предназначенный для обеспечения удобной проверки, поддерживающей только алгоритм sha1.

 

Примечание

 

Для этого валидатора требуется Hash расширение PHP c алгоритмом sha1.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

 

hash (строка)

Хэш для проверки файла.

 

Примеры использования

// Имеет ли файл заданный хэш?
$validator = new \Zend\Validator\File\Sha1('3b3652f336522365223');
 
// Либо проверить несколько хэшей для файла
$validator = new \Zend\Validator\File\Sha1(array(
    '3b3652f336522365223', 'eb3365f3365ddc65365'
));
 
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
    // файл валиден
}
 

Публичные методы

 

getSha1()

Вернет текущий набор хэшей sha1.

Тип возвращаемого значения: array

 

 

addSha1(string|array $options)

Добавляет хэш sha1 для одного или нескольких файлов во внутренний набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

setSha1(string|array $options)

Устанавливает хэш sha1 для одного или нескольких файлов. Удаляет предыдущий набор хэшей.

Параметры: $options - смотрите подробности в разделе "Поддерживаемые параметры".

 

 

 

 

Size
(размер)

 

Zend\Validator\File\Size проверяет размер файла.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

min (integer|string) поумолчанию: null

max (integer|string) поумолчанию: null

  Целое число байт, или стока в нотации SI (т.е. 1kB, 2MB, 0.2GB).

  Допустимые обозначения единиц измерения для нотации SI: kB, MB, GB, TB, PB, и EB. Все размеры преобразуются с помощью 1024 в качестве базового значения (т.е. 1kB == 1024 байт, 1MB == 1024kB).

useByteString (boolean) по умолчанию: true

  Отображение сообщений об ошибках с размером чисел в удобном для пользователя формате, либо просто размером в байтах.

 

Примеры использования

// Лимит на размер файла 40000 байт
$validator = new \Zend\Validator\File\Size(40000);
 
// Лимит на размер файла между 10kB и 4MB
$validator = new \Zend\Validator\File\Size(array(
    'min' => '10kB', 'max' => '4MB'
));
 
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
    // файл валиден
}
 

UploadFile
(загрузкафайла)

 

Zend\Validator\File\UploadFile проверяет, был ли загружен отдельный файл с помощью POST формы, и вернет описательные сообщения о любой ошибке загрузки.

 

Примечание

 

Zend\InputFilter\FileInput автоматически добавит этот валидатор в начало своей цепочки валидаторов.

 


Примеры использования

use Zend\Http\PhpEnvironment\Request;
 
$request = new Request();
$files   = $request->getFiles();
// т.е. $files['my-upload']['error'] == 0
 
$validator = \Zend\Validator\File\UploadFile();
if ($validator->isValid($files['my-upload'])) {
    // файл валиден
}
 

WordCount
(количество слов)

 

Zend\Validator\File\WordCount проверяет количество слов в файле

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры:

min (integer) по умолчанию: null

max (integer) по умолчанию: null

  Разрешенное число слов.

 

Примеры использования

// Максимальный лимит количества слов 2000
$validator = new \Zend\Validator\File\WordCount(2000);
 
// Лимит количества слов в диапазоне между 100 и 5000
$validator = new \Zend\Validator\File\WordCount(100, 5000);
 
// ... или нотация в виде массива
$validator = new \Zend\Validator\File\WordCount(array(
    'min' => 1000, 'max' => 5000
));
 
// Выполнить проверку для пути файла
if ($validator->isValid('./myfile.txt')) {
    // файл валиден
}