Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-02-2009 17:45:45

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Upload de fichier

Bonjour à tous,
Je débute dans le Zend Framework et je suis en train de l'appliquer en tant que module et non en MVC (pour le moment).

J'ai donc créé un formulaire d'upload :

$nom = new Zend_Form_Element_Text('nom');
        $nom->setLabel("Nom du lieu :");
        $nom->setRequired(true);
        $nom->setErrorMessages($this->errorMessages);
        $nom->setDecorators($this->elementDecorators);
        $this->addElement($nom);
       
        $complement = new Zend_Form_Element_Textarea('complement');
        $complement->setLabel("Complément :");
        $complement->setRequired(false);
        $complement->setDecorators($this->elementDecorators);
        $this->addElement($complement);
       
        $document = new Zend_Form_Element_File('document');
        $document->setLabel("Document associé :");
        $document->setRequired(false);
        $document->setDestination(REP_TMP);
        $document->setDecorators($this->elementDecorators);
        $this->addElement($document);
       
        $idLieu = new Zend_Form_Element_Hidden('idLieu');
        $idLieu->setRequired(false);
        $this->addElement($idLieu);
       
        $submitButton = new Zend_Form_Element_Submit('submit_evenement');
        $submitButton->setLabel("Valider");
        $submitButton->setValue("Valider");
        $submitButton->setDecorators($this->elementSubmit);
        $this->addElement($submitButton);

Jusque là tout vas bien.

En premier lieu je souhaite faire un move_upload_file pour le mettre dans un dossier approprié tout en renommant le fichier.

Le code ci dessous ne fonctionne pas !
$dest = REP_DOCUMENT.$nomFichier;
if($form->document->isUploaded())
{
    $move = move_uploaded_file($form->document, $dest);
}

La deuxieme question est pour récupérer le type mime d'un fichier uploadé je passe par le variable $_FILES.
Il y a t-il une solution via le ZF.

Par avance Merci

Hors ligne

 

#2 01-03-2009 10:34:27

Matthieu
Nouveau membre
Lieu: Montélimar
Date d'inscription: 13-07-2008
Messages: 9
Site web

Re: Upload de fichier

Salut,

Pour répondre à ta première question, il faut préciser à zend ceci  :

Code:

this->setAttrib('enctype', 'multipart/form-data');

Si cela peut d'aider, il y'a un bon tuto à cette adresse http://akrabat.com/2008/11/29/file-uplo … ment_file/

Hors ligne

 

#3 02-03-2009 23:54:28

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: Upload de fichier

Merci pour ton aide !
J'ai encore des problèmes.
J'ai essayé de suivre le tuto mais des que j'active le setDestination();
J'ai une erreur.

Voici mon code :

public function init($options = null)
    {
       parent::init($options);
        $this->setName('upload');
        $this->setAttrib('enctype', 'multipart/form-data');

        $description = new Zend_Form_Element_Text('legende');
        $description->setLabel('Légende')
                  ->setRequired(true)
                  ->addValidator('NotEmpty');

        $file = new Zend_Form_Element_File('fichierDocument');
        $file->setLabel('Fichier')
            //->setDestination(BASE_PATH . '/data/uploads')
            ->setRequired(true);

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Upload');

        $this->addElements(array($description, $file, $submit));
    }


Dans mon controller :

  // Création du formulaire et déclaration des paramètres généraux
       $form = new Zfbook_Form_Document();
       $form->setAction($this->view->link('document' , 'edit', null, '', 'default', !$isUpdate))
       ->setMethod('post')
       ->setDefaults($document->toArray());

        // Création du formulaire et ajout/suppression
        if ($this->getRequest()->isPost() && $form->isValid($_POST))
        {
            $formData = $this->_request->getPost();
            // Retrait des informations depuis les données en POST
            // et ajout dans le modèle.
            $values = $form->getValues();
            if($values['idDocument'] == "")
            {
                $values['idDocument'] = md5(microtime());
            }
           
            if($_FILES['fichierDocument']['error']==0)
            {
                $fichier = Zfbook_MyFramework_FichierFactory::factory($_FILES['fichierDocument']);
                $nomFichier =$values['idDocument'].$fichier->makeExtension();
               
                $dest = BASE_PATH."documents/".$nomFichier;
                if($form->fichierDocument->isUploaded())
                {
                    $form->fichierDocument->receive();
                    $location = $form->fichierDocument->getFileName();
                    $move = move_uploaded_file($location, "/documents");
                }
               
                $document['fichierDocument'] = $nomFichier;
            }
             
            $document->setFromArray(array_intersect_key($values, $document->toArray()));

            // Sauvegarde des informations
            $document->save();
           
           

            // Redirection vers la liste des réservations
           // $this->_redirect('/lieu/list');
        }
        // Assignation du formulaire pour affichage
        $this->view->form = $form;

J'utilise l'architecture MVC par défaut.
Si quelqu'un peut m'eclairer !!

Dernière modification par jbunel (02-03-2009 23:55:50)

Hors ligne

 

#4 03-03-2009 12:00:03

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

Re: Upload de fichier

je pense que tu as une erreur car tu fais un

Code:

$move = move_uploaded_file($location, "/documents");

il ne doit pas trouver le fichier à déplacer car tu l'as déjà déplacé.
c'est justement le role du setdestination qui est appelé dans la méthode receive (qui est peut être appelé dans le save ?)

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