Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut,
Je voudrais avoir votre avis sur un comportement bizarre que j'ai relevé :
Je cherche à créer un formulaire d'upload de fichier.
Formulaire :
$this->setAttrib('enctype','multipart/form-data'); $upload = new Zend_Form_Element_File('file'); $upload->addValidator('IsImage', true); $this->addElement($upload);
Dans le Controller:
$transfer= new Zend_File_Transfer_Adapter_Http(array ('ignoreNoFile' => true )); $transfer->addValidator('IsImage', true);
Mais voila, aucune exception n'est levée quand j'envoie un fichier texté renommé en .jpg. Je ne comprends pas pourquoi.
Mes éléments sont correctment liés puis je fais les différents "->isValid", qui marchent partout avec tous les Validators, sauf celui la.
J'ai essayé le validator Mimetype, mais idem : inefficace.
$upload->addValidator('MimeType', false, 'image');
Zendment,
Dernière modification par DarKA (10-09-2009 07:36:30)
Hors ligne
Salut,
Je pense que le soucis provient du fait que pour que ca marche bien, il faut installer un composant supplémentaire, et donc la méthode utilisé ne marche pas bien ici.
J'ai opté pour une autre option qui marche tout aussi bien.
J'ai créé un validator, et j'utilise getimagesize, qui ne me renvoie un résultat que si il s'agit d'une image, ce qui est parfait ici.
class App_Validate_Image extends Zend_Validate_Abstract { /** * @const string Error constants */ const FALSE_TYPE = 'fileIsImageFalseType'; const NOT_DETECTED = 'fileIsImageNotDetected'; const NOT_READABLE = 'fileIsImageNotReadable'; /** * @var array Error message templates */ protected $_messageTemplates = array( self::FALSE_TYPE => "The file '%value%' is no image", self::NOT_DETECTED => "The mimetype of file '%value%' has not been detected", self::NOT_READABLE => "The file '%value%' can not be read" ); /** * Sets default option values for this instance * * @param boolean $allowWhiteSpace * @return void */ public function __construct() { } /** * Defined by Zend_Validate_Interface * * Returns true if and only if $value contains only alphabetic and digit characters * * @param string $value * @return boolean */ public function isValid($value) { $finfo = getimagesize($value); $this->_setValue($value); if (!$finfo) { $this->_error(self::FALSE_TYPE); return false; } return true; }
Hors ligne
Pages: 1