Question

J'avais l'habitude d'avoir un contrôleur ZF qui traitait un téléchargement Ajax Fineploader. Le code était simple:

$adapter = new Zend_File_Transfer_Adapter_Http();
        $filename = uniqid();
        $adapter->addFilter('Rename', APPLICATION_PATH . "/../public/temp-images/" . $filename);
        $adapter->addValidator('Size', false, array("max" => "2MB"));
        $adapter->addValidator('isImage', false);
        if ($adapter->receive()) {
            // Get mime type
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            $mimeType = finfo_file($finfo, APPLICATION_PATH . "/../public/temp-images/" . $filename);
            finfo_close($finfo);

            preg_match('/(.*)\/(.*)/', $mimeType, $matches);
            $extension = '.' . $matches[2];

Maintenant, je refactore en utilisant Symfony2 et j'ai des difficultés à faire la même chose. C'est ce que j'ai jusqu'à présent:

$form = $this->createFormBuilder()
    ->add('qqfile', 'file', array('constraints' => new File(array('maxSize' => '2M'))))
    ->getForm();


    if ($form->isValid()) {
       die('yes');
    } else {
       die('no');
    }

C'est ce qui est envoyé depuis le navigateur:

------ Webkitformboundaryypzt2RQJ6W4AWSFP Contenu-Disposition: Form-Data; Nom="qquuid"

B977C4B2-0EDB-486B-AA86-4558275598AA ------ webkitformboundaryypzt2rqj6w4awsfp contenu-disposition: format-données; Nom="qqtotalfilesize"

14092 ------ webkitformboundaryypzt2rqj6w4awsfp contenu-disposition: format-données; Nom="qqfile"; Nom de fichier="ae35e28.png" Type de contenu: image / png

------ webkitformboundaryypzt2rqj6w4awsfp -

Maintenant, je sais que le formulaire ne sera pas validé, car les données postées ne contiennent aucun nom pour le formulaire. En fait, je n'ai même pas besoin de valider tout le formulaire, juste du fichier téléchargé (comme ici Symfony2: Téléchargez un fichier à l'aide d'un plugin de téléchargement de fichier ), mais comment utiliser la validation pour cela?

Était-ce utile?

La solution

Je fini par le comprendre moi-même.

Au lieu d'utiliser un formulaire sans classe, j'ai créé un formulaire de classe dont la méthode GetName () renvoie une chaîne vide.J'ai défini mappé= FALSE pour tous les autres champs, à l'exception du QQFile et également désactivé la protection CSRF pour le formulaire.De cette manière, la forme est correctement soumise et l'entrée de fichier validée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top