Se necesita revisar la corrección de los archivos subidos como se hace con cualquier otro dato del formulario. Por ejemplo, podríamos necesitar revisar:
Si los archivos fueron realmente subidos a través de una petición POST HTTP y que no fueron solo copiados desde alguna carpeta.
Si el o los archivos fueron subidos exitosamente (con un código de error cero).
Si los nombres y/o las extensiones de los archivos son aceptables (por ejemplo, queremos guardar archivos JPEG solamente y rechazar todos los otros).
Si el tamaño del archivo está en el rango permitido (por ejemplo, queremos asegurarnos que el archivo no es muy grande).
Si el número total de archivos subidos no excede algún límite.
Para hacer este tipo de revisiones ZF3 provee un número de validadores de archivo
útiles (listado en la tabla 10.1). Estas clases validadoras pertenecen al componente
Zend\Validator
y están en el espacio de nombres Zend\Validator\File
.
Nombre de la Clase | Alias | Descripción |
---|---|---|
Count |
FileCount |
Revisa si el total luego de contar los archivos esta en un rango dado (min, max). |
WordCount |
FileWordCount |
Cuenta el número de palabras que están en un archivo y revisa si el total está en un rango dado. |
Upload |
FileUpload |
Ejecuta una revisión de seguridad para asegurar que todos los archivos dados fueron realmente subidos a través de POST HTTP y si no hay errores de subida. |
UploadFile |
FileUploadFile |
Ejecuta una revisión de seguridad para asegurar que un archivo fue realmente subido a través de POST HTTP y que no existieron errores de subida. |
Size |
FileSize |
Revisa si el tamaño del archivo está en un rango dado. |
FilesSize |
FileFilesSize |
Revisa si el tamaño total de todos los archivos dado esta en un determinado rango. |
Extension |
FileExtension |
Revisa que la extensión de un archivo pertenezca a un conjunto de extensiones permitidas. |
ExcludeExtension |
FileExcludeExtension |
Revisa que la extensión de un archivo NO pertenezca a un conjunto de extensiones. |
MimeType |
FileMimeType |
Revisa que el tipo MIME de un archivo pertenezca a la lista de tipos MIME permitidos. |
ExcludeMimeType |
FileExcludeMimeType |
Revisa que el tipo MIME de un archivo no pertenezca a la lista de tipos MIME. |
IsImage |
FileIsImage |
Revisa que el archivo es una imagen gráfica (JPEG, PNG, GIF, etc.) |
ImageSize |
FileImageSize |
Revisa que las dimensiones del archivo de imagen está en un rango dado. |
Exists |
FileExists |
Revisa si el archivo existe en el disco. |
NotExists |
FileNotExists |
Revisa si el archivo no existe en el disco. |
IsCompressed |
FileIsCompressed |
Revisa si el archivo está empacado (ZIP, TAR, etc.) |
Hash |
FileHash |
Revisa si el contenido del archivo coincide con uno o varios hash. |
Crc32 |
FileCrc32 |
Revisa que el contenido del archivo tiene la suma de CRC32 comprobación. |
Sha1 |
FileSha1 |
Revisa que el contenido del archivo tiene el hash SHA-1. |
Md5 |
FileMd5 |
Revisa que el contenido del archivo tiene el hash MD5 dado. |
Como podemos ver de la tabla de arriba, los validadores de archivos se pueden dividir aproximadamente en los siguientes grupos:
42) Un hash de archivo se usa para revisar la integridad de los datos del archivo (por ejemplo, para asegurar que los datos del archivo no están corruptos). Existen varios algoritmos hash disponibles: MD5, SHA-1, CRC32, etc.
Debemos notar que como los validadores de archivo están en el espacio de nombres
Zend\Validator\File
, su alias (que usamos cuando creamos un validador con una fábrica) comienza con el prefijoFile
. Por ejemplo, el validadorIsImage
tiene el aliasFileIsImage
.
Mostraremos como usar algunos de estos filtros de validación de archivo con una Galería de Imágenes de ejemplo luego en este capítulo.