Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-09-2008 14:57:59

juli3n
Membre
Date d'inscription: 02-09-2008
Messages: 37

Zend_File_Transfer

Bonjour,

je ne savais pas où poster à propos de ce nouveau composant, merci aux admins de déplacer le topic dans le forum adéquat.

J'aimerai uploader des images sur mon serveur, j'utilise le modèle MVC, et je débute. Tous les ingrédients pour être paumé (surtout le dernier lol)

J'ai placé le code suivant dans mon modèle

Code:

        $logo = new Zend_Form_Element_File('logo');
        $logo->setLabel('Logo')
        ->addValidator('Size', false, 202400)
        ->addValidator('Extension',  array('gif', 'jpg', 'png'));

et celui ci dans le controleur associé:

Code:

                $adapter = new Zend_File_Transfer_Adapter_Http();
                $adapter = $form->logo->getTransferAdapter();
                $adapter->setDestination('C:\wamp\www\projet\public\upload');
                                
                if (!$adapter->isValid('logo')) {
                print_r($adapter->getMessages());
                }
            
                try {
                        $adapter->receive();
                } catch (Zend_File_Transfer_Exception $e) {
                        $e->getMessage();
                }

Rien ne se passe, le fichier n'est pas uploadé. J'ai du louper un truc quelque part, forcement.

J'ai essayé plusieurs trucs, mais rien à faire ... est ce que quelqu'un aurait une idée?

Merci d'avance pour votre aide,

Julien

Hors ligne

 

#2 05-09-2008 17:05:40

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Zend_File_Transfer

Je suis en plein dedans aussi, et j'ai un probleme pour l'upload de plusieurs fichiers dans des subForms sad mais pour un seul fichier ce la fonctionne :
Il faut rajouter le ->setRequired(true) sinon il ne fait rien silencieusement.

Formulaire :

Code:

$form= new Zend_Form();
$form->setName ( 'Avion' )->setAttrib('id','Avion')->setMethod('post');    
$form->setAttrib('enctype', 'multipart/form-data');      // IMPORTANT

$uploadPath= realpath('.') . '/upload';
$photo= new Zend_Form_Element_File('avion_photo');
$photo->addValidator('Count', false, 1)// ensure only 1 file
                      ->addValidator('Extension', false, 'jpg,png,gif')
                       ->setDestination( $uploadPath );   //IMPORTANT
$photo->setRequired(true) //IMPORTANT
                       ->setLabel('photo');
$form->addElement( $photo );

Controleur :

Code:

...........
        if ( $form->isValid( $formData ) ) {           
            // pour remplir ma base correctement
//avion_photo est le nom de l'élément File
                $formData['avion_photo']= basename( $form->avion_photo->getValue() );
            
                
                $form->populate ( $formData );
                $newRow= $this->objet->createRow( $formData );
                try {
                    $newRow->save();                    
                } catch (Exception $e) {
                    Zend_Debug::dump($e, 'e');
                }
                $this->_redirect ( '/avion/index' );
              } else {
                $form->populate ( $formData );
            }

Le isValid() lance chaque isValid() des élements, mais l'élément File lance l'$adapter->receive() donc pas besoin de receive() apres un isValid(). Je trouve d'ailleurs pas évident que la validation fasse un upload de fichier.

Hors ligne

 

#3 05-09-2008 17:08:55

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Zend_File_Transfer

Pas encore touché à ce composant, mais il n'est pas en version finale, il est encore en cours de développement

Hors ligne

 

#4 05-09-2008 19:51:32

juli3n
Membre
Date d'inscription: 02-09-2008
Messages: 37

Re: Zend_File_Transfer

Merci fte en m'inspirant de ton code j'arrive à uploader mon image. Il faudrait que j'en uploade 3 depuis le meme formulaire, ça fonctionne chez toi?

Hors ligne

 

#5 06-09-2008 09:41:20

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Zend_File_Transfer

Tjrs le meme pb des file dans des subforms ;sad Je fais un grid edit sous forme de table, avec un subform par ligne tr.

Dernière modification par fte (06-09-2008 09:43:00)

Hors ligne

 

#6 08-09-2008 11:31:18

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

Julien a écrit:

Pas encore touché à ce composant, mais il n'est pas en version finale, il est encore en cours de développement

hmm.
Si il n'était pas finalisé, pourquoi serait-il dans le 1.6 ?? (il n'est plus dans l'incubateur)


----
Gruiiik !

Hors ligne

 

#7 09-09-2008 13:00:52

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

Hello !

J'utilise ce composant en ce moment même.
Le fichier est surement uploader (print_r($_FILES)), mais c'est le renommage qui doit déconner à mon avis.
Je vais chercher


----
Gruiiik !

Hors ligne

 

#8 09-09-2008 14:50:09

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

a fait 30min que je cherche, et je viens de me rendre compte que ca fonctionnait smile

voilà ce qui marche pour moi :

Code:

    $this->addElement('file', 'input_file', array(
       'decorators' => $this->_standardElementDecorator,
      'label' => 'Fichier d\'entrée:',
      'required' => true,
    ));

un echo $form->input_file->getValue() renvoi le bon chemin


----
Gruiiik !

Hors ligne

 

#9 09-09-2008 15:04:57

nick
Membre
Date d'inscription: 31-05-2008
Messages: 84

Re: Zend_File_Transfer

nORKy a écrit:

Julien a écrit:

Pas encore touché à ce composant, mais il n'est pas en version finale, il est encore en cours de développement

hmm.
Si il n'était pas finalisé, pourquoi serait-il dans le 1.6 ?? (il n'est plus dans l'incubateur)

je l'utilise actuellement, et je confirme, on est loin de la version finale, il suffit de jeter un coup d'oeil dans le isssue tracker de Zend Framework pour voir le nombre de méthodes qui restent à implémenter.

Même dans le code source :

    public function getFile()
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

C'est surement suffisant pour de l'upload simple. Pour ma part, je ne trouve pas tout à fait mon compte pour l'upload multiple.

Hors ligne

 

#10 10-09-2008 08:49:47

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

d'ailleurs, il n'y a pas une fonction pour supprimer le fichier uploadé ?
Car, mon utilisation actuelle est juste du traitement de données ; une fois traité, je n'ai plus besoin du fichier


----
Gruiiik !

Hors ligne

 

#11 10-09-2008 09:04:08

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_File_Transfer

Hello,

Comme je l'ai écrit ici. La version 1.6.1 arrive rapidement avec pas mal de boulot pour Zend_Form_File.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 10-09-2008 10:46:17

juli3n
Membre
Date d'inscription: 02-09-2008
Messages: 37

Re: Zend_File_Transfer

Je n'arrive pas à m'en sortir avec l'upload multiple, est-ce que qq'un aurait un exemple qui fonctionne? (je cherche a uploader 3 images depuis le meme form)

j'attend la 1.6.1 avec impatience smile (hey ca ne fait que 3 semaines que je planche sur zf mais j'aime beaucoup)

Hors ligne

 

#13 10-09-2008 11:05:06

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

Re: Zend_File_Transfer

idem, vivement la 1.6.1 smile

Est-ce que quelqu'un a réussi à utiliser Zend_Form_Element_File ? (avec l'exemple de la doc)

Hors ligne

 

#14 10-09-2008 11:53:34

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

moi, je m'en de l'exemple de la doc, j'ai posté le code qui créé mon élement un peu plus haut

Je m'en sers pour envoyer des csv et faire du parsing.


----
Gruiiik !

Hors ligne

 

#15 10-09-2008 13:04:44

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_File_Transfer

Hello,

nORKy, si la doc est erronée, il faut tant que possible faire remonter l'info. Je sais c'est parfois fastidieux mais ça aide tout le monde.

Message d'hier sur la façon de remonter les problèmes.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#16 10-09-2008 14:14:55

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_File_Transfer

t'inquiete, j'ai oublié des mots smile

Je voulais dire, je m'en suis servi de l'exemple de la doc smile

Pour moi, ce qui est dans la doc fonctionne. (mais je l'utilise de la manière la plus simple)

Dernière modification par nORKy (10-09-2008 14:15:21)


----
Gruiiik !

Hors ligne

 

#17 10-09-2008 14:24:46

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_File_Transfer

Hello,

Je trouvais les termes étonnant de ta part  smile. C'est mieux avec une phrase complète wink.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#18 26-09-2008 14:57:39

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: Zend_File_Transfer

Concernant l'élement File dans un SubForm, ca a bougé dans le svn et il y a meme un billet qui en parle :
http://www.thomasweidner.com/flatpress/ … -elements/

Hors ligne

 

#19 29-09-2008 09:30:49

juli3n
Membre
Date d'inscription: 02-09-2008
Messages: 37

Re: Zend_File_Transfer

perso je ne suis pas arrivé à m'en sortir ... j'ai utilisé la méthode expliqué dans un tuto Akrabat et ça fonctionne très bien!

Hors ligne

 

#20 29-09-2008 11:39:02

meuledor
Nouveau membre
Lieu: grenoble
Date d'inscription: 04-12-2007
Messages: 6

Re: Zend_File_Transfer

Salut,
moi c'est pareil, j'ai du mal avec l'upload multiple.

Dans mon subform "Documents" (les constantes sont dans mon config.ini):

Code:

 private $fileName = "files";
...
 $file = new Zend_Form_Element_File($this->fileName);
 $file->setLabel('Upload files:')
        ->setDestination($uploadConfig->path)
           ->addValidator('Count', false, $uploadConfig->count)    
        ->addValidator('Size', false, $uploadConfig->maxsize) 
        ->addValidator('Extension', false,  $uploadConfig->extension)
        ->setMultiFile(3)
        ->setTransferAdapter(new Atf_File_Transfer_Adapter());

J'ai juste étendu l'adapter http pour y ajouter un getter sur l'array _files (ou sur la methode _getFiles)

Code:

class Atf_File_Transfer_Adapter extends Zend_File_Transfer_Adapter_Http {
    
    public function getFiles($key) {
        
        return $this->_files;
        //return $this->_getFiles($key);
    }
}

Dans mon action controller, apres un $form->isValid($formData):

Code:

 $fileElement = $form->getSubForm("Documents")->getElement("files");
 $files = $fileElement->getTransferAdapter()->getFiles("files");

Même en accedant directement à _files je me recupere tjs cette exception lancée par _getFiles hmm

Code:

Type : Zend_File_Transfer_Exception
Message : "files_1_" not found by file transfer adapter
File : C:\Software\xampp-1.6.3\htdocs\ATF2\library\Zend\File\Transfer\Adapter\Abstract.php
Line : 1159

Il y eu des commit ce w-e dans le trunk, les modifs portant sur les validators d'un file element...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages