Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 18h15   #1
Invité régulier
 
Inscription : mars 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 37
Points : 9
Points : 9
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 :
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
phoelis1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 18h26   #2
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
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 !)
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 20h13   #3
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Ok, je m'y suis penché.

Code :
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
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/05/2008, 11h47   #4
Invité régulier
 
Inscription : mars 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 37
Points : 9
Points : 9
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 :
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);
 
 
    }
phoelis1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 15h12   #5
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Là, je n'aurais qu' une chose à dire : RTFM

From the book of Symfony:
Code :
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);
      }
    }
  }
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 15h19   #6
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
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...
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 16h07   #7
Invité régulier
 
Inscription : mars 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 37
Points : 9
Points : 9
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...
phoelis1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 22h53   #8
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
OK.
Code :
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 ?
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 12h03   #9
Invité régulier
 
Inscription : mars 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 37
Points : 9
Points : 9
merci beaucoup et je pense sincèrement que ce post (grâce à toi) devrait rester en up pour les uploads de fichier multiples ;-)
phoelis1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 15h23   #10
Invité régulier
 
Inscription : mars 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 37
Points : 9
Points : 9
hop un petit ajout qui peut aussi etre pas mal (et qui fonctionne :-) ) si on veut ajouter des thumbnails.

Code :
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');
		} 
 
      }
    }
  }
phoelis1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 16h22   #11
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Oui, à préciser qu'il faut le plugin sfThumbnail
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2008, 10h00   #12
Membre régulier
 
Inscription : septembre 2006
Messages : 138
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 138
Points : 81
Points : 81
Envoyer un message via MSN à phpiste
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 :
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>' ;
} 
?>
phpiste est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h52.


 
 
 
 
Partenaires

Hébergement Web