IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

[ZF 1.6.1]Upload de fichiers


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut [ZF 1.6.1]Upload de fichiers
    Je galère complètement sur l'upload de fichiers.
    Le form fonctionne, les validations fonctionnent (sauf la traduction des messages d'erreurs), mais impossible de récupérer le fichier uploadé.

    Mon form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            $subjectFile = new Zend_Form_Element_File('subjectFile');
            $subjectFile->addValidator('Count', false, 1)
                        ->addValidator('Size', false, '1MB') 
                        ->addValidator('Extension', false, 'pdf')
                        ->addValidator('MimeType', false, 'application/pdf');
            $this->addElement($subjectFile);
    Mon controller (une fois le form valide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                        $adapter = new Zend_File_Transfer_Adapter_Http();
                        $adapter->setDestination('C:\temp');
                        if (!$adapter->receive()) {
                            $messages = $adapter->getMessages();    
                            echo implode("\n", $messages);
                        }
    Résultat :
    The file 'subjectFile' was illegal uploaded, possible attack
    Alors qu'un dump de $_FILE donne :
    array(1) {
    ["subjectFile"] => array(5) {
    ["name"] => string(14) "travailler.pdf"
    ["type"] => string(15) "application/pdf"
    ["tmp_name"] => string(35) "C:\Program Files\wamp\tmp\php22.tmp"
    ["error"] => int(0)
    ["size"] => int(33962)
    }
    }
    et que le fichier en question (C:\Program Files\wamp\tmp\php22.tmp) n'existe pas sur mon disque dur...

    Une idée ?
    Quelqu'un aurait-il un exemple fonctionnel, car la doc est plus que succinte sur le sujet !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Je poursuis mes test.
    En fait, si je rajoute setDestination() dans le form, le fichier est uploadé dans le bon répertoire, avec le nom initial du fichier. Le tableau $_FILE est faux (le fichier temporaire n'existe pas), et j'ai un false quand je fait un is_uploaded_file() sur le fichier téléchargé.
    Puis-je utiliser ce fichier sans pb de sécurité même si is_uploaded_file() renvoie false ?
    Comment gérer les risques de noms de fichiers concurrents, car un fichier uploadé écrase un fichier de même nom présent dans le répertoire temporaire (pas de gestion des noms de fichiers temporaires comme le fait un serveur web).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 99
    Par défaut
    Hello,

    je ne sais pas si ca peut t'aider mais ca serait un bon moyen de te remercier pour ton aide mais j'ai coincé sur le même problème que toi et j'ai trouvé cette solution:

    Mon controlleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( !empty($_FILES['file']) ) {
    	$picture_temp = $_FILES['file']['tmp_name'];
    	$picture = $_FILES['file']['name'];
    	move_uploaded_file($picture_temp,'./upload/'.$picture);
    }
    Dis moi si c'est ce que tu recherche ?

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Par défaut
    L'erreur suivante :
    The file 'subjectFile' was illegal uploaded, possible attack
    est provoquée par l'utilisation de :
    $subjectFile = new Zend_Form_Element_File('subjectFile');
    ...
    $adapter = new Zend_File_Transfer_Adapter_Http();
    dans le controller, il faut remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $adapter = $form->picture_name->getTransferAdapter();
    if ($adapter->receive()) {
    ...
    }
    Thomas Weidner says on nabble :
    You should eighter use Zend_Form_Element_File or Zend_File_Transfer.
    As Zend_Form_Element_File uses it's own instance of Zend_File_Transfer you
    are working with 2 instances, which probably leads to the error.
    Greetings
    Thomas Weidner, I18N Team Leader, Zend Framework

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    OK, merci pour vos réponses. Je teste dès que j'ai le temps !

  6. #6
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    salut, a tu résolu ton problème ?
    et comment ?
    car j'ai le même.

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo