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

Symfony PHP Discussion :

Upload multiple de fichiers via symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut Upload multiple de fichiers via symfony
    Bonjour a tous.

    J'avance dans bien des points et je me lance encore plus loin.

    J'ai lu un super tuto sur 'Developpez.com' :-) ici

    et j'aimerais l'adapter sur symfony !!!

    Bon la bonne nouvelle c est que je suis proche du but !

    1) copie des fichier JS dans le rep "web/js" + appel au fichier --> OK
    2) mise en place du code HTML --> ok

    jusque la ca fonctionne j'ai bien le super effet :-) et jepeux rajouter et effacer les fichiers.

    L'upload en lui meme

    dans mon actionclass j'ai une fonction executeUpdate():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    foreach($_FILES as $fichier)
        {
        	//$this->getRequest()->$fichier['name'];
        	$picture = new Picture();
    		$picture->setId($this->getRequestParameter('id'));
    		$picture->setFilePath("/".$fichier['name']);
    		$picture->save();
    		$last_id = $picture->getId();
     
    		//insert reference in table campagne
    		$campagne->setPictureId($last_id);
     
    		//upload picture campagne
    		$fileName = $fichier['name'];
    		$target =  sfConfig::get('sf_upload_dir').'/'.$fileName;
     
    		move_uploaded_file($fichier['uploadedfile']['tmp_name'], $target);
    		//$this->getRequest()->moveFile('name', sfConfig::get('sf_upload_dir').'/'.$fileName);
     
     
        }
    c est donc la que le bat blesse je retrouve sans problèmes les données et je les insère bien dans la DB ! mais pas moyen de les uploader.

    si une personne à une idée, un grand merci sachant en plus que ca pourra aider bien des gens ce petit truc :-)

    Phoelis

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Si je comprends bien, ton problème se situe non pas au niveau de l'insertion en bdd, mais au niveau de l'upload même ?
    Si c'est ça, je vais tester pour voir (pas trop envie de modifier mon modèle si ce n'est pas le cas !)

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ok, je m'y suis penché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
    public function executeUpload()
    {
            foreach($_FILES as $fichier)
            {
    	    $fileName = $fichier['name'];
                $target = sfConfig::get('sf_upload_dir').'/'.$fileName;
     
                if (move_uploaded_file($fichier['tmp_name'], $target))
                {
                      $this->message = "Fichier transféré";
                } else
                {
                      $this->message = "Fichier non transféré";
                 }
            }
            return sfView::SUCCESS;
    }
    ?>
    et dans uploadSuccess.php

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Et bien Tsifely MERCI !!! you are a star ;-)

    Ca fonctionne nickel et je pense que ce post servira à d'autre !

    Maintenant juste pour le fun (bah vi)

    si on allait plus loin et que l'on utilise la methode getRequest() ... et moveFile() cher à symfony

    idem le problème se situe sur l'upload et non l'insertion de la DB.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    foreach ($this->getRequest()->getFileNames() as $fileName)
        {
     
        	$picture = new Picture();
    		$picture->setId($this->getRequestParameter('id'));
    		$picture->setFilePath("/".$this->getRequest()->getFileName($fileName));
    		$picture->save();
    		$last_id = $picture->getId();
     
    		//insert reference in campagne
    		$campagne->setPictureId($last_id);
     
     
    $fileSize  = $this->getRequest()->getFileSize($fileName);
              $fileType  = $this->getRequest()->getFileType($fileName);
              $fileError = $this->getRequest()->hasFileError($fileName);
              $fileRealName = $this->getRequest()->getFileName($fileName);
     
    		$target =  sfConfig::get('sf_upload_dir').'/'.$fileName;
    			$this->getRequest()->moveFile($this->getRequest()->getFileName($fileName),$target);
     
     
        }

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Là, je n'aurais qu' une chose à dire : RTFM

    From the book of Symfony:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function executeUpload()
      {
        if ($this->getRequest()->hasFiles())
        {
          foreach ($this->getRequest()->getFileNames() as $fileName)
          {
            $fileSize  = $this->getRequest()->getFileSize($fileName);
            $fileType  = $this->getRequest()->getFileType($fileName);
            $fileError = $this->getRequest()->hasFileError($fileName);
            $uploadDir = sfConfig::get('sf_upload_dir');
            $this->getRequest()->moveFile('file', $uploadDir.'/'.$fileName);
          }
        }
      }

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Hum, je viens de tester, avec $fileName en guise de nom dans moveFile(), et les extensions sont mal interprétées (le fichier uploadé devient photo_gif au lieu de photo.gif). getFileExtension ne marche pas, et getFileType non plus.
    Pour y parvenir, il faudrait customiser un peu , mais comme je déteste réinventer la roue, je vais regarder si ce n'est pas possible naturellement, dans le cadre de symfony...

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    ouf ca me rassure car apres plusieurs essais (et lu le TFM ;-) ) me suis retrouvé avec le même problème des _jpg au lieu de .jpg...

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    OK.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public function executeUpload()
      {
        if ($this->getRequest()->hasFiles())
        {
          foreach ($this->getRequest()->getFileNames() as $fileName)
          {
            $name = $this->getRequest()->getFileName($fileName);
    	$fileSize  = $this->getRequest()->getFileSize($fileName);
            $fileType  = $this->getRequest()->getFileType($fileName);
            $fileError = $this->getRequest()->hasFileError($fileName);
            $uploadDir = sfConfig::get('sf_upload_dir');
            $this->getRequest()->moveFile($fileName, $uploadDir.'/'.$name);
     
          }
        }
      }
    Satisfait ?

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    merci beaucoup et je pense sincèrement que ce post (grâce à toi) devrait rester en up pour les uploads de fichier multiples ;-)

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    hop un petit ajout qui peut aussi etre pas mal (et qui fonctionne :-) ) si on veut ajouter des thumbnails.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    public function executeUpload()
      {
        if ($this->getRequest()->hasFiles())
        {
          foreach ($this->getRequest()->getFileNames() as $fileName)
          {
            $name = $this->getRequest()->getFileName($fileName);
    	$fileSize  = $this->getRequest()->getFileSize($fileName);
            $fileType  = $this->getRequest()->getFileType($fileName);
            $fileError = $this->getRequest()->hasFileError($fileName);
            $uploadDir = sfConfig::get('sf_upload_dir');
            $this->getRequest()->moveFile($fileName, $uploadDir.'/'.$name);
     
        // creation des thumbnails
            $extensions = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg');
     
    		if(in_array($fileType, $extensions)) //Si l'extension est dans le tableau
    		{
    		$thumbnail = new sfThumbnail(150, 150);
    		$thumbnail->loadFile(sfConfig::get('sf_upload_dir').'/'.$name);
    		$thumbnail->save(sfConfig::get('sf_upload_dir').'/thumbnail/'.$name, 'image/png');
    		} 
     
          }
        }
      }

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Oui, à préciser qu'il faut le plugin sfThumbnail

  12. #12
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Juste une question comment tu appelle les champs file dans ta vue ; parce que chez moi ça marche plus
    (j'arrive pas à récuperer les informations des fichiers envoyés )
    Voila un peu l'allure de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php echo form_tag('dossier/depot', 'multipart=true') ?>
    <?php for($i=0;$i<sfConfig::get("app_min_upload_field");$i++){ 
    echo input_file_tag('document[]').'<br>' ;
    } 
    ?>
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] Upload multiple de fichiers
    Par emageren dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2008, 01h38
  2. Upload multiple de fichiers
    Par patsabatier dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 27/11/2008, 20h42
  3. [1.x] Upload multiple de fichier AJAX
    Par LordBob dans le forum Symfony
    Réponses: 7
    Dernier message: 26/11/2008, 10h19
  4. [Upload] upload multiple de fichiers différents
    Par Sonny.j dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 17h23
  5. [Upload] Upload de plusieurs fichiers via formulaire
    Par seb67110 dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2007, 11h55

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