Los formularios de Symfony 1.4

13.5. Validador de archivos

13.5.1. sfValidatorFile

sfValidatorFile valida los archivos subidos por los usuarios. Además, el validador convierte el archivo subido en una instancia de la clase sfValidatedFile o de la clase que se indique en la opción validated_file_class.

Opción Error Descripción
max_size max_size El tamaño máximo permitido para los archivos subidos
mime_types mime_types Array con los tipos MIME permitidos o el nombre de la categoría de tipos MIME (la única categoría disponible es web_images)
mime_type_guessers - Array con los ejecutables de PHP encargados de adivinar el tipo MIME de los archivos (deben devolver o el tipo MIME o null)
mime_categories - Array de categorías de tipos MIME (la categoría web_images está definida por defecto)
path - La ruta en la que se guarda el archivo y que utiliza la clase sfValidatedFile (opcional)
validated_file_class - Nombre de la clase que gestiona el archivo subido y validado (opcional)

La categoría web_images incluye los siguientes tipos MIME:

  • image/jpeg
  • image/pjpeg
  • image/png
  • image/x-png
  • image/gif

Si la opción mime_types está activada, el validador necesita comprobar el tipo MIME del archivo subido. Por este motivo el validador ya incluye tres comprobadores de tipos MIME:

  • guessFromFileinfo: utiliza la función finfo_open() (de la extensión Fileinfo de PECL)
  • guessFromMimeContentType: utiliza la función mime_content_type() (obsoleto)
  • guessFromFileBinary: utiliza el contenido del propio archivo (sólo funciona en los sistemas *nix)
Error Variables Valor por defecto (se muestra en inglés)
max_size %size%, %max_size% File is too large (maximum is %max_size% bytes).
mime_types %mime_types%, %mime_type% Invalid mime type (%mime_type%).
partial The uploaded file was only partially uploaded.
no_tmp_dir Missing a temporary folder.
cant_write Failed to write file to disk.
extension File upload stopped by extension.

El validador asocia los errores de PHP de la siguiente manera:

  • UPLOAD_ERR_INI_SIZE: max_size
  • UPLOAD_ERR_FORM_SIZE: max_size
  • UPLOAD_ERR_PARTIAL: partial
  • UPLOAD_ERR_NO_TMP_DIR: no_tmp_dir
  • UPLOAD_ERR_CANT_WRITE: cant_write
  • UPLOAD_ERR_EXTENSION: extension