Zend_File_Transfer se distribuye con varios validadores relacionados con
ficheros que pueden usarse para aumentar la seguridad y prevenir posibles ataques. Tenga en cuenta que
estos validadores solo son tan eficaces como la forma en que los aplique. Todos los validadores
proporcionados con Zend_File_Transfer se pueden encontrar en el componente
Zend_Validator y se denominan
Zend_Validate_File_*. Los siguientes validadores están disponibles:
Count: Este validador comprueba el número de ficheros. Se puede especificar un rango mínimo y máximo. Se lanzará un error si se sobrepasa cualquiera de los límites.Crc32: Este validador comprueba el valor hash crc32 del contenido de un fichero. Está basado en el validadorHashy proporciona un validador conveniente y simple que solo soporta Crc32.ExcludeExtension: Este validador comprueba la extensión de los ficheros. Lanzará un error cuando un fichero dado tenga una extensión definida. Con este validador puede excluir extensiones definidas de la validación.ExcludeMimeType: Este validador valida el tipo MIME de los ficheros. También puede validar tipos MIME y lanzará un error si el tipo MIME del fichero especificado coincide.Exists: Este validador comprueba la existencia de ficheros. Lanzará un error cuando un fichero especificado no exista.Extension: Este validador comprueba la extensión de los ficheros. Lanzará un error cuando un fichero especificado tenga una extensión no definida.FilesSize: Este validador comprueba el tamaño de los ficheros validados. Recuerda internamente el tamaño de todos los ficheros comprobados y lanza un error cuando la suma de todos los ficheros especificados excede el tamaño definido. También proporciona valores mínimos y máximos.ImageSize: Este validador comprueba el tamaño de la imagen. Valida el ancho y el alto y aplica dimensiones mínimas y máximas.IsCompressed: Este validador comprueba si el fichero está comprimido. Está basado en el validadorMimeTypey valida archivos comprimidos como zip o arc. También puede limitarlo a otros archivos.IsImage: Este validador comprueba si el fichero es una imagen. Está basado en el validadorMimeTypey valida ficheros de imagen como jpg o gif. También puede limitarlo a otros tipos de imagen.Hash: Este validador comprueba el valor hash del contenido de un fichero. Soporta múltiples algoritmos.Md5: Este validador comprueba el valor hash md5 del contenido de un fichero. Está basado en el validadorHashy proporciona un validador conveniente y simple que solo soporta Md5.MimeType: Este validador valida el tipo MIME de los ficheros. También puede validar tipos MIME y lanzará un error si el tipo MIME de un fichero especificado no coincide.NotExists: Este validador comprueba la existencia de ficheros. Lanzará un error cuando un fichero dado exista.Sha1: Este validador comprueba el valor hash sha1 del contenido de un fichero. Está basado en el validadorHashy proporciona un validador conveniente y simple que solo soporta sha1.Size: Este validador es capaz de comprobar el tamaño de ficheros. Proporciona un rango de tamaño mínimo y máximo y lanzará un error cuando se sobrepase cualquiera de estos umbrales.Upload: Este validador es interno. Comprueba si una subida ha resultado en un error. No debe establecerlo, ya queZend_File_Transferlo establece automáticamente por sí mismo. Por lo tanto no debe usar este validador directamente. Solo debe saber que existe.WordCount: Este validador es capaz de comprobar el número de palabras dentro de los ficheros. Proporciona un recuento mínimo y máximo y lanzará un error cuando se sobrepase cualquiera de estos umbrales.
Poner los validadores en funcionamiento es bastante sencillo. Hay varios métodos para añadir y manipular validadores:
isValid($files = null): Comprueba los ficheros especificados usando todos los validadores.$filespuede ser un nombre de fichero real, el nombre del elemento o el nombre del fichero temporal.addValidator($validator, $breakChainOnFailure, $options = null, $files = null): Añade el validador especificado a la pila de validadores (opcionalmente solo al fichero o ficheros especificados).$validatorpuede ser una instancia real de validador o un nombre corto que especifique el tipo de validador (p. ej., 'Count').addValidators(array $validators, $files = null): Añade los validadores especificados a la pila de validadores. Cada entrada puede ser un par tipo/opciones de validador o un array con la clave 'validator' que especifique el validador. El resto de opciones se considerarán opciones del validador para su instanciación.setValidators(array $validators, $files = null): Sobrescribe cualquier validador existente con los validadores especificados. Los validadores deben seguir la sintaxis deaddValidators().hasValidator($name): Indica si se ha registrado un validador.getValidator($name): Devuelve un validador previamente registrado.getValidators($files = null): Devuelve los validadores registrados. Si se especifica$files, devuelve los validadores de ese fichero o conjunto de ficheros en particular.removeValidator($name): Elimina un validador previamente registrado.clearValidators(): Elimina todos los validadores registrados.
Ejemplo 34.9. Añadir validadores a un objeto de transferencia de ficheros
$upload = new Zend_File_Transfer();
// Set a file size with 20000 bytes
$upload->addValidator('Size', false, 20000);
// Set a file size with 20 bytes minimum and 20000 bytes maximum
$upload->addValidator('Size', false, array('min' => 20, 'max' => 20000));
// Set a file size with 20 bytes minimum and 20000 bytes maximum and
// a file count in one step
$upload->setValidators(array(
'Size' => array('min' => 20, 'max' => 20000),
'Count' => array('min' => 1, 'max' => 3),
));
Ejemplo 34.10. Limitar validadores a ficheros individuales
addValidator(), addValidators(),
y setValidators() aceptan cada uno un último
argumento $files. Este argumento puede usarse para
especificar un fichero en particular o un array de ficheros sobre el que aplicar
el validador dado.
$upload = new Zend_File_Transfer();
// Set a file size with 20000 bytes and limits it only to 'file2'
$upload->addValidator('Size', false, 20000, 'file2');
Normalmente, debería usar el método addValidators(), que
puede llamarse múltiples veces.
Ejemplo 34.11. Añadir múltiples validadores
A menudo es más simple llamar a addValidator() múltiples
veces con una llamada para cada validador. Esto también aumenta la legibilidad y hace
que su código sea más mantenible. Todos los métodos proporcionan una interfaz fluida, por lo que puede
encadenar las llamadas como se muestra a continuación:
$upload = new Zend_File_Transfer();
// Set a file size with 20000 bytes
$upload->addValidator('Size', false, 20000)
->addValidator('Count', false, 2)
->addValidator('Filessize', false, 25000);
![]() |
Nota |
|---|---|
Tenga en cuenta que establecer el mismo validador varias veces está permitido, pero hacerlo puede provocar problemas cuando se usan opciones diferentes para el mismo validador. |
Por último, pero no menos importante, puede simplemente comprobar los ficheros usando
isValid().
Ejemplo 34.12. Validar los ficheros
isValid() acepta el nombre de fichero del fichero subido o
descargado, el nombre del fichero temporal y/o el nombre del elemento del formulario. Si
no se proporciona ningún parámetro o se pasa null, se validarán todos los ficheros
$upload = new Zend_File_Transfer();
// Set a file size with 20000 bytes
$upload->addValidator('Size', false, 20000)
->addValidator('Count', false, 2)
->addValidator('Filessize', false, 25000);
if (!$upload->isValid()) {
print "Validation failure";
}
![]() |
Nota |
|---|---|
Tenga en cuenta que |
Cuando la validación ha fallado es una buena idea obtener información sobre los
problemas encontrados. Para obtener esta información, puede usar los métodos
getMessages() que devuelve todos los mensajes de validación como un array,
getErrors() que devuelve todos los códigos de error, y
hasErrors() que devuelve TRUE tan pronto como
se ha encontrado un error de validación.
El validador Count comprueba el número de ficheros que se
proporcionan. Soporta las siguientes claves de opción:
-
min: Establece el número mínimo de ficheros a transferir.
![[Note]](images/note.png)
Nota Al usar esta opción debe proporcionar el número mínimo de ficheros al llamar a este validador por primera vez; de lo contrario, obtendrá un error como resultado.
Con esta opción puede definir el número mínimo de ficheros que espera recibir.
-
max: Establece el número máximo de ficheros a transferir.
Con esta opción puede limitar el número de ficheros que se aceptan, pero también detectar un posible ataque cuando se dan más ficheros de los definidos en su formulario.
Si inicia este validador con una cadena o un entero, el valor se usará como
max. También puede usar los métodos
setMin() y setMax() para establecer ambas
opciones posteriormente, y getMin() y
getMax() para obtener los valores establecidos actualmente.
Ejemplo 34.13. Uso del validador Count
$upload = new Zend_File_Transfer();
// Limit the amount of files to maximum 2
$upload->addValidator('Count', false, 2);
// Limit the amount of files to maximum 5 and minimum 1 file
$upload->addValidator('Count', false, array('min' =>1, 'max' => 5));
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador almacena internamente el número de ficheros comprobados. El fichero que exceda el máximo se devolverá como error. |
El validador Crc32 comprueba el contenido de un fichero transferido
aplicándole un hash. Este validador usa la extensión hash de PHP con el
algoritmo crc32. Soporta las siguientes opciones:
-
*: Establece cualquier clave o usa un array numérico. Los valores se usarán como hash contra el que validar.
Puede establecer varios hashes usando diferentes claves. Cada uno se comprobará y la validación fallará solo si todos los valores fallan.
Ejemplo 34.14. Uso del validador Crc32
$upload = new Zend_File_Transfer();
// Checks whether the content of the uploaded file has the given hash
$upload->addValidator('Crc32', false, '3b3652f');
// Limits this validator to two different hashes
$upload->addValidator('Crc32', false, array('3b3652f', 'e612b69'));
El validador ExcludeExtension comprueba la extensión de fichero de los
ficheros especificados. Soporta las siguientes opciones:
*: Establece cualquier clave o usa un array numérico. Los valores se usarán para comprobar que el fichero dado no use esta extensión de fichero.
case: Establece un booleano que indica si la validación debe distinguir mayúsculas y minúsculas. El valor por defecto no distingue mayúsculas y minúsculas. Tenga en cuenta que esta clave se puede aplicar a todas las extensiones disponibles.
Este validador acepta varias extensiones, ya sea como una cadena separada por comas, o como
un array. También puede usar los métodos setExtension(),
addExtension(), y getExtension()
para establecer y obtener extensiones.
En algunos casos es útil comparar distinguiendo mayúsculas y minúsculas. Por eso el constructor
admite un segundo parámetro llamado $case que, si se establece a
TRUE, valida la extensión comparándola con los valores
especificados distinguiendo mayúsculas y minúsculas.
Ejemplo 34.15. Uso del validador ExcludeExtension
$upload = new Zend_File_Transfer();
// Do not allow files with extension php or exe
$upload->addValidator('ExcludeExtension', false, 'php,exe');
// Do not allow files with extension php or exe, but use array notation
$upload->addValidator('ExcludeExtension', false, array('php', 'exe'));
// Check in a case-sensitive fashion
$upload->addValidator('ExcludeExtension',
false,
array('php', 'exe', 'case' => true));
$upload->addValidator('ExcludeExtension',
false,
array('php', 'exe', 'case' => true));
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador solo comprueba la extensión del fichero. No comprueba el tipo MIME del fichero. |
El validador ExcludeMimeType comprueba el tipo MIME
de los ficheros transferidos. Soporta las siguientes opciones:
-
*: Establece cualquier clave individualmente o usa un array numérico. Establece el tipo MIME contra el que validar.
Con esta opción puede definir el tipo MIME de los ficheros que no se van a aceptar.
headerCheck: Si se establece a
TRUEesta opción comprobará la Información HTTP para el tipo de fichero cuando las extensiones fileInfo o mimeMagic no se puedan encontrar. El valor por defecto de esta opción esFALSE.
Este validador acepta varios tipos MIME, ya sea como una
cadena separada por comas, o como un array. También puede usar los métodos
setMimeType(), addMimeType(), y
getMimeType() para establecer y obtener los tipos
MIME.
Ejemplo 34.16. Uso del validador ExcludeMimeType
$upload = new Zend_File_Transfer();
// Does not allow MIME type of gif images for all files
$upload->addValidator('ExcludeMimeType', false, 'image/gif');
// Does not allow MIME type of gif and jpg images for all given files
$upload->addValidator('ExcludeMimeType', false, array('image/gif',
'image/jpeg');
// Does not allow MIME type of the group images for all given files
$upload->addValidator('ExcludeMimeType', false, 'image');
El ejemplo anterior muestra que también es posible rechazar grupos de tipos MIME. Por ejemplo, para rechazar todas las imágenes, simplemente use 'image' como el tipo MIME. Esto se puede usar para todos los grupos de tipos MIME como 'image', 'audio', 'video', 'text', etc.
![]() |
Nota |
|---|---|
Tenga en cuenta que rechazar grupos de tipos MIME rechazará a todos los miembros de este grupo aunque no sea intencionado. Cuando rechaza 'image' rechazará todos los tipos de imágenes como 'image/jpeg' o 'image/vasa'. Cuando no está seguro de si quiere rechazar todos los tipos, debería rechazar solo tipos MIME específicos en lugar de grupos completos. |
El validador Exists comprueba la existencia de los ficheros
especificados. Soporta las siguientes opciones:
*: Establece cualquier clave o usa un array numérico para comprobar si el fichero específico existe en el directorio dado.
Este validador acepta varios directorios, ya sea como una cadena separada por comas, o como
un array. También puede usar los métodos setDirectory(),
addDirectory(), y getDirectory()
para establecer y obtener directorios.
Ejemplo 34.17. Uso del validador Exists
$upload = new Zend_File_Transfer();
// Add the temp directory to check for
$upload->addValidator('Exists', false, '\temp');
// Add two directories using the array notation
$upload->addValidator('Exists',
false,
array('\home\images', '\home\uploads'));
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador comprueba si el fichero especificado existe en todos los directorios dados. La validación fallará si el fichero no existe en alguno de los directorios dados. |
El validador Extension comprueba la extensión de fichero de los
ficheros especificados. Soporta las siguientes opciones:
*: Establece cualquier clave o usa un array numérico para comprobar si el fichero especificado tiene esta extensión de fichero.
case: Establece si la validación debe realizarse distinguiendo mayúsculas y minúsculas. El valor por defecto no distingue mayúsculas y minúsculas. Tenga en cuenta que esta clave se usa para todas las extensiones dadas.
Este validador acepta varias extensiones, ya sea como una cadena separada por comas, o como un
array. También puede usar los métodos setExtension(),
addExtension(), y getExtension() para
establecer y obtener valores de extensión.
En algunos casos es útil comprobar distinguiendo mayúsculas y minúsculas. Por lo tanto el
constructor toma un segundo parámetro $case, que, si se establece a
TRUE, validará la extensión distinguiendo mayúsculas y minúsculas.
Ejemplo 34.18. Uso del validador Extension
$upload = new Zend_File_Transfer();
// Limit the extensions to jpg and png files
$upload->addValidator('Extension', false, 'jpg,png');
// Limit the extensions to jpg and png files but use array notation
$upload->addValidator('Extension', false, array('jpg', 'png'));
// Check case sensitive
$upload->addValidator('Extension', false, array('mo', 'png', 'case' => true));
if (!$upload->isValid('C:\temp\myfile.MO')) {
print 'Not valid because MO and mo do not match with case sensitivity;
}
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador solo comprueba la extensión del fichero. No comprueba el tipo MIME del fichero. |
El validador FilesSize comprueba el tamaño agregado de todos los
ficheros transferidos. Soporta las siguientes opciones:
min: Establece el tamaño agregado mínimo de fichero. Esta opción define el tamaño agregado mínimo de fichero a transferir.
-
max: Establece el tamaño agregado máximo de fichero.
Esta opción limita el tamaño agregado de fichero de todos los ficheros transferidos, pero no el tamaño de fichero de los ficheros individuales.
-
bytestring: Define si un fallo debe devolver un número comprensible para el usuario o el tamaño de fichero simple.
Esta opción define si el usuario ve '10864' o '10MB'. El valor por defecto es
TRUE, por lo que se devuelve '10MB' si no especifica lo contrario.
Puede inicializar este validador con una cadena, que se usará entonces para establecer la
opción max. También puede usar los métodos
setMin() y setMax() para establecer ambas
opciones tras la construcción, junto con getMin() y
getMax() para obtener los valores establecidos previamente.
El tamaño en sí también se acepta en notación SI, tal y como la manejan la mayoría de sistemas operativos. Es decir, en lugar de especificar 20000 bytes, se puede dar 20kB. Todos los tamaños de fichero se convierten usando 1024 como el valor base. Se aceptan las siguientes unidades: kB, MB, GB, TB, PB y EB. Tenga en cuenta que 1kB es igual a 1024 bytes, 1MB es igual a 1024kB, y así sucesivamente.
Ejemplo 34.19. Uso del validador FilesSize
$upload = new Zend_File_Transfer();
// Limit the size of all files to be uploaded to 40000 bytes
$upload->addValidator('FilesSize', false, 40000);
// Limit the size of all files to be uploaded to maximum 4MB and mimimum 10kB
$upload->addValidator('FilesSize',
false,
array('min' => '10kB', 'max' => '4MB'));
// As before, but returns the plain file size instead of a user-friendly string
$upload->addValidator('FilesSize',
false,
array('min' => '10kB',
'max' => '4MB',
'bytestring' => false));
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador almacena internamente el tamaño de fichero de los ficheros comprobados. El fichero que exceda el tamaño se devolverá como error. |
El validador ImageSize comprueba el tamaño de los ficheros de imagen.
Soporta las siguientes opciones:
minheight: Establece el alto mínimo de la imagen.
maxheight: Establece el alto máximo de la imagen.
minwidth: Establece el ancho mínimo de la imagen.
maxwidth: Establece el ancho máximo de la imagen.
Los métodos setImageMin() y
setImageMax() también establecen los valores mínimo y máximo, mientras que
los métodos getMin() y getMax()
devuelven los valores establecidos actualmente.
Para su conveniencia también están los métodos setImageWidth() y
setImageHeight(), que establecen el alto y ancho mínimo y máximo
del fichero de imagen. También cuentan con los correspondientes métodos
getImageWidth() y getImageHeight()
para obtener los valores establecidos actualmente.
Para omitir la validación de una dimensión en particular, simplemente no debe establecerse la opción correspondiente.
Ejemplo 34.20. Uso del validador ImageSize
$upload = new Zend_File_Transfer();
// Limit the size of a image to a height of 100-200 and a width of
// 40-80 pixel
$upload->addValidator('ImageSize', false,
array('minwidth' => 40,
'maxwidth' => 80,
'minheight' => 100,
'maxheight' => 200)
);
// Reset the width for validation
$upload->setImageWidth(array('minwidth' => 20, 'maxwidth' => 200));
El validador IsCompressed comprueba si un fichero transferido es un
archivo comprimido, como zip o arc. Este validador está basado en el validador
MimeType y soporta los mismos métodos y opciones.
También puede limitar este validador a tipos de compresión particulares con los métodos
descritos allí.
Ejemplo 34.21. Uso del validador IsCompressed
$upload = new Zend_File_Transfer();
// Checks is the uploaded file is a compressed archive
$upload->addValidator('IsCompressed', false);
// Limits this validator to zip files only
$upload->addValidator('IsCompressed', false, array('application/zip'));
// Limits this validator to zip files only using simpler notation
$upload->addValidator('IsCompressed', false, 'zip');
![]() |
Nota |
|---|---|
Tenga en cuenta que no hay comprobación si se establece un tipo MIME que no sea un archivo. Por ejemplo, sería posible definir ficheros gif para que sean aceptados por este validador. Usar el validador 'MimeType' para ficheros que no son archivos comprimidos dará lugar a un código más legible. |
El validador IsImage comprueba si un fichero transferido es un fichero
de imagen, como gif o jpeg. Este validador está basado en el validador
MimeType y soporta los mismos métodos y opciones.
Puede limitar este validador a tipos de imagen particulares con los métodos descritos allí.
Ejemplo 34.22. Uso del validador IsImage
$upload = new Zend_File_Transfer();
// Checks whether the uploaded file is a image file
$upload->addValidator('IsImage', false);
// Limits this validator to gif files only
$upload->addValidator('IsImage', false, array('application/gif'));
// Limits this validator to jpeg files only using a simpler notation
$upload->addValidator('IsImage', false, 'jpeg');
![]() |
Nota |
|---|---|
Tenga en cuenta que no hay comprobación si se establece un tipo MIME que no sea una imagen. Por ejemplo, sería posible definir ficheros zip para que sean aceptados por este validador. Usar el validador 'MimeType' para ficheros que no son imágenes dará lugar a un código más legible. |
El validador Hash comprueba el contenido de un fichero transferido
aplicándole un hash. Este validador usa la extensión hash de PHP. Soporta
las siguientes opciones:
-
*: Toma cualquier clave o usa un array numérico. Establece el hash contra el que validar.
Puede establecer varios hashes pasándolos como un array. Se comprueba cada fichero, y la validación fallará solo si todos los ficheros fallan la validación.
-
algorithm: Establece el algoritmo a usar para el hash del contenido.
Puede establecer varios algoritmos llamando al método
addHash()varias veces.
Ejemplo 34.23. Uso del validador Hash
$upload = new Zend_File_Transfer();
// Checks if the content of the uploaded file contains the given hash
$upload->addValidator('Hash', false, '3b3652f');
// Limits this validator to two different hashes
$upload->addValidator('Hash', false, array('3b3652f', 'e612b69'));
// Sets a different algorithm to check against
$upload->addValidator('Hash',
false,
array('315b3cd8273d44912a7',
'algorithm' => 'md5'));
![]() |
Nota |
|---|---|
Este validador soporta cerca de 34 algoritmos hash diferentes. Los más comunes incluyen 'crc32', 'md5' y 'sha1'. Se puede encontrar una lista exhaustiva de algoritmos hash soportados en el método hash_algos en el sitio php.net. |
El validador Md5 comprueba el contenido de un fichero transferido
aplicándole un hash. Este validador usa la extensión hash de PHP con el
algoritmo md5. Soporta las siguientes opciones:
-
*: Toma cualquier clave o usa un array numérico.
Puede establecer varios hashes pasándolos como un array. Se comprueba cada fichero, y la validación fallará solo si todos los ficheros fallan la validación.
Ejemplo 34.24. Uso del validador Md5
$upload = new Zend_File_Transfer();
// Checks if the content of the uploaded file has the given hash
$upload->addValidator('Md5', false, '3b3652f336522365223');
// Limits this validator to two different hashes
$upload->addValidator('Md5',
false,
array('3b3652f336522365223',
'eb3365f3365ddc65365'));
El validador MimeType comprueba el tipo MIME de
los ficheros transferidos. Soporta las siguientes opciones:
-
*: Establece cualquier clave o usa un array numérico. Establece el tipo MIME contra el que validar.
Define el tipo MIME de los ficheros que se van a aceptar.
headerCheck: Si se establece a
TRUEesta opción comprobará la Información HTTP para el tipo de fichero cuando las extensiones fileInfo o mimeMagic no se puedan encontrar. El valor por defecto de esta opción esFALSE.-
magicfile: El magicfile a usar.
Con esta opción puede definir qué magicfile usar. Cuando no está establecida o está vacía, se usará en su lugar la constante MAGIC. Esta opción está disponible desde Zend Framework 1.7.1.
Este validador acepta varios tipos MIME, ya sea como una
cadena separada por comas, o como un array. También puede usar los métodos
setMimeType(), addMimeType(), y
getMimeType() para establecer y obtener el tipo
MIME.
También puede establecer el magicfile que usará fileinfo con la opción 'magicfile'.
Además hay métodos convenientes setMagicFile() y
getMagicFile() que permiten establecer y obtener posteriormente
el parámetro magicfile. Estos métodos están disponibles desde Zend Framework 1.7.1.
Ejemplo 34.25. Uso del validador MimeType
$upload = new Zend_File_Transfer();
// Limit the MIME type of all given files to gif images
$upload->addValidator('MimeType', false, 'image/gif');
// Limit the MIME type of all given files to gif and jpeg images
$upload->addValidator('MimeType', false, array('image/gif', 'image/jpeg');
// Limit the MIME type of all given files to the group images
$upload->addValidator('MimeType', false, 'image');
// Use a different magicfile
$upload->addValidator('MimeType',
false,
array('image',
'magicfile' => '/path/to/magicfile.mgx'));
El ejemplo anterior muestra que también es posible limitar el tipo MIME aceptado a un grupo de tipos MIME. Para permitir todas las imágenes simplemente use 'image' como tipo MIME. Esto se puede usar para todos los grupos de tipos MIME como 'image', 'audio', 'video', 'text', y así sucesivamente.
![]() |
Nota |
|---|---|
Tenga en cuenta que permitir grupos de tipos MIME aceptará a todos los miembros de este grupo aunque su aplicación no los soporte. Cuando permite 'image' también obtendrá 'image/xpixmap' o 'image/vasa' lo cual podría ser problemático. Cuando no está seguro de si su aplicación soporta todos los tipos, debería permitir mejor solo tipos MIME definidos en lugar del grupo completo. |
![]() |
Nota |
|---|---|
|
Este componente usará la extensión
Debe ser consciente de posibles problemas de seguridad cuando no dispone ni de
|
El validador NotExists comprueba la existencia de los ficheros
proporcionados. Soporta las siguientes opciones:
*: Establece cualquier clave o usa un array numérico. Comprueba si el fichero existe en el directorio dado.
Este validador acepta varios directorios, ya sea como una cadena separada por comas, o como un
array. También puede usar los métodos setDirectory(),
addDirectory(), y getDirectory() para
establecer y obtener directorios.
Ejemplo 34.26. Uso del validador NotExists
$upload = new Zend_File_Transfer();
// Add the temp directory to check
$upload->addValidator('NotExists', false, '\temp');
// Add two directories using the array notation
$upload->addValidator('NotExists', false,
array('\home\images',
'\home\uploads')
);
![]() |
Nota |
|---|---|
Tenga en cuenta que este validador comprueba que el fichero no exista en ninguno de los directorios proporcionados. La validación fallará si el fichero existe en alguno de los directorios dados. |
El validador Sha1 comprueba el contenido de un fichero transferido
aplicándole un hash. Este validador usa la extensión hash de PHP con el
algoritmo sha1. Soporta las siguientes opciones:
-
*: Toma cualquier clave o usa un array numérico.
Puede establecer varios hashes pasándolos como un array. Se comprueba cada fichero, y la validación fallará solo si todos los ficheros fallan la validación.
Ejemplo 34.27. Uso del validador sha1
$upload = new Zend_File_Transfer();
// Checks if the content of the uploaded file has the given hash
$upload->addValidator('sha1', false, '3b3652f336522365223');
// Limits this validator to two different hashes
$upload->addValidator('Sha1',
false, array('3b3652f336522365223',
'eb3365f3365ddc65365'));
El validador Size comprueba el tamaño de un único fichero. Soporta
las siguientes opciones:
min: Establece el tamaño mínimo de fichero.
max: Establece el tamaño máximo de fichero.
-
bytestring: Define si un fallo se devuelve con un número comprensible para el usuario, o con el tamaño de fichero simple.
Con esta opción puede definir si el usuario obtiene '10864' o '10MB'. El valor por defecto es
TRUE, que devuelve '10MB'.
Puede inicializar este validador con una cadena, que se usará entonces para establecer la
opción max. También puede usar los métodos
setMin() y setMax() para establecer ambas
opciones tras la construcción, junto con getMin() y
getMax() para obtener los valores establecidos previamente.
El tamaño en sí también se acepta en notación SI, tal y como la manejan la mayoría de sistemas operativos. Es decir, en lugar de especificar 20000 bytes, se puede dar 20kB. Todos los tamaños de fichero se convierten usando 1024 como el valor base. Se aceptan las siguientes unidades: kB, MB, GB, TB, PB y EB. Tenga en cuenta que 1kB es igual a 1024 bytes, 1MB es igual a 1024kB, y así sucesivamente.
Ejemplo 34.28. Uso del validador Size
$upload = new Zend_File_Transfer();
// Limit the size of a file to 40000 bytes
$upload->addValidator('Size', false, 40000);
// Limit the size a given file to maximum 4MB and mimimum 10kB
// Also returns the plain number in case of an error
// instead of a user-friendly number
$upload->addValidator('Size',
false,
array('min' => '10kB',
'max' => '4MB',
'bytestring' => false));
El validador WordCount comprueba el número de palabras dentro de
los ficheros proporcionados. Soporta las siguientes claves de opción:
min: Establece el número mínimo de palabras a encontrar.
max: Establece el número máximo de palabras a encontrar.
Si inicia este validador con una cadena o un entero, el valor se usará como
max. También puede usar los métodos
setMin() y setMax() para establecer ambas
opciones posteriormente, y getMin() y
getMax() para obtener los valores establecidos actualmente.
Ejemplo 34.29. Uso del validador WordCount
$upload = new Zend_File_Transfer();
// Limit the amount of words within files to maximum 2000
$upload->addValidator('WordCount', false, 2000);
// Limit the amount of words within files to maximum 5000 and minimum 1000 words
$upload->addValidator('WordCount', false, array('min' => 1000, 'max' => 5000));