Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-05-2010 12:08:34

Wawan
Membre
Date d'inscription: 09-10-2009
Messages: 14

[Zend_Form] Upload simple d'une image

Bonjour,

J'essaie depuis quelques jours de réaliser un upload de fichier à partir d'un formulaire, mais rien à faire ça ne marche pas.

Mon formulaire

Code:

<form id="upload_form" method="POST" action="<?php echo $this->url(array('controller'=>'X','action'=>'X'));?>">
...
    <li>
        <label class="description">Photographie</label>
        <div>
            <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
            <input name="uploadedfile" type="file" />
        </div>
    </li>
...
</form>

Mon controller

Code:

    $upload = new Zend_File_Transfer_Adapter_Http();
    $upload->addValidator('FilesSize',
                      false,
                      array('min' => 100,
                            'max' => 10000,
                            'bytestring' => true));
        $upload->addValidator('ImageSize',
                      false,
                      array('minwidth' => $largeur_mini,
                            'minheight' => $hauteur_mini,
                            'maxwidth' => $largeur_maxi,
                            'maxheight' => $hauteur_maxi));
       ...
       
      if($input->isValid()) {
                ...
        Zend_Debug::dump($upload->getFileInfo());
        $upload->setDestination($uploaddir);//->receive();
        if ($upload->receive()) { 
            echo "\n The file has been uploaded!";
        } else {
            echo "\n The file has not been uploaded!";
            //Zend_Debug::dump($upload);
        }
                ...
      }

Voici le message d'erreur que j'obtient :

Code:

array(0) {
}
The file has not been uploaded!
The file '' exceeds the defined ini size

Je ne reçoit rien. C'est comme si je n'avais pas de fichier. J'utilise ZF 1.9.5. J'ai essayé avec un simple formulaire php (sans ZF) et ça marche sans problème.

Quelqu'un aurait-il une idée ?

Hors ligne

 

#2 02-05-2010 18:40:16

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Zend_Form] Upload simple d'une image

Mon action :

Code:

public function addAction()
    {
        $request = $this->getRequest();
        $form = new Application_Form_AddProduit(); //formulaire d'ajout
        if ($this->getRequest()->isPost()) {
            if ($form->isValid($request->getPost())) {
                $upload = new Zend_File_Transfer_Adapter_Http();
                $upload->setDestination(PUBLIC_PATH.'/images/produits/'); //chemin ou l'image sera placé
                try {
                    // Upload du fichier reçu
                    if($upload->receive()){
                        $produit = new Application_Model_Produit($form->getValues()); // crée le model Produit
                        $produit->setImg($upload->getFileName($file = null, $path = false)); // récupère le nom de l'image (pour la bdd)
                        $produitMapper  = new Application_Model_ProduitMapper();
                        $produitMapper->save($produit); //enregistre le produit ds la base
                        $form->reset(); //vide le formulaire
                    }
                } catch (Zend_File_Transfer_Exception $e) {
                    $e->getMessage();
                }
            }
        }
        
        $this->view->form = $form;
    }

Mon form :

Code:

class Application_Form_AddProduit extends Zend_Form
{

    public function init()
    {
        $this->setMethod('post')
             ->setAttrib('enctype', 'multipart/form-data');


        // Nom
        $nom = $this->createElement('text', 'nom');
        $nom->setLabel('Nom :')
            ->setRequired(true)
            ->addValidator('NotEmpty');

        // Adresse
        $description = $this->createElement('textarea', 'description');
        $description->setLabel('Description :')
                ->setAttribs(array(
                     'cols' => 25,
                     'rows' => 3
                 ))
                 ->setRequired(true)
                 ->addValidator('NotEmpty')
                 ->addFilter('StripTags');

        //Img
        $img = $this->createElement('file', 'img');
        $img->setLabel('Image :')
            ->setRequired(true);

        // Prix
        $prix = $this->createElement('text', 'prix');
        $prix->setLabel('Prix :')
             ->setRequired(true)
             ->addValidator('NotEmpty');

        // Marque
        $marque = new Zend_Form_Element_Select('idMarque');
        $marque->setLabel('Marque :');
        $tableMarque = new Application_Model_MarqueMapper();
        foreach($tableMarque->fetchAll() as $uneMarque){
            $marque->addMultiOption($uneMarque->idMarque, $uneMarque->libelleMarque);
        }
        

        // Ajout des éléments au formulaire
        $this->addElement($nom)
             ->addElement($description)
             ->addElement($img)
             ->addElement($prix)
             ->addElement($marque)
             ->addElement('submit', 'ajouter', array('label' => 'Ajouter'));
    }
}

Perso je fais comme ça et ça roule wink

Hors ligne

 

#3 02-05-2010 23:24:46

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

Re: [Zend_Form] Upload simple d'une image

Hello,

Je dirais que tu envoies un fichier plus gros que tu n'es autorisé par ton php.ini

@+


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

Hors ligne

 

#4 03-05-2010 09:26:35

Wawan
Membre
Date d'inscription: 09-10-2009
Messages: 14

Re: [Zend_Form] Upload simple d'une image

J'essaierai d'utiliser le formulaire, ça pourrait venir de là.

Je me pose une question en voyant votre façon de faire : est-on obliger de créer un formulaire avec Zend pour utiliser Zend_File_Transfer_Adapter_Http (ou toute technique permettant de récupérer $_FILES) ?

Sinon j'ai essayer avec une image qui fait 4KO, et mon php.ini est configuré par défaut à 2M.

Hors ligne

 

#5 04-05-2010 10:26:42

Wawan
Membre
Date d'inscription: 09-10-2009
Messages: 14

Re: [Zend_Form] Upload simple d'une image

Re-Bonjour

Alors j'ai essayé en instanciant un Zend_Form et là.... ça marche NICKEL !
Bon c'est déjà ça.

Vous avez une idée du pourquoi ça marche pas avec un formulaire HTML ??
Parce que mon projet est déjà commencé et j'ai pas utilisé Zend_Form au début de peur d'être limité dans l'utilisation que je voulais en faire. Mais si j'ai encore d'autres surprise comme ça...

Hors ligne

 

#6 07-07-2010 14:34:42

selecto16
Membre
Date d'inscription: 03-07-2010
Messages: 19

Re: [Zend_Form] Upload simple d'une image

ton <form> n'as pas l'attribut 'enctype=multipart/form-data'.
Sans cet attribut, pas d'upload possible

Hors ligne

 

#7 07-07-2010 15:32:50

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

Re: [Zend_Form] Upload simple d'une image

Effectivement et Zend_Form l'ajoute automatiquement quand il contient un élément File.

Conclusion => utilisons Zend_Form sans modération


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

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