[PHP] test upload de fichier (resolu)

test upload de fichier (resolu) [PHP] - PHP - Programmation

Marsh Posté le 23-06-2004 à 10:20:39    

Bonjour à tous
 
j'ai un problème étrange avec l'upload de fichiers et php.
 
J'ai une base de données de films, et je veux pouvoir associer une jaquette à un film. Cette jaquette est envoyée avec un champ input file.
J'arrive très bien à uploader une jaquette, ça l'enregistre correctement et tout. J'ai une interface qui permet de modifier cette jaquette, et ça marche impec.
Mais seulement quand on envoie une jaquette.
 
Voici le code qui permet d'envoyer la jaquette :
 

Code :
  1. if (isset($_FILES['jaquette']['tmp_name'])) {
  2.   envoi_image($_FILES['jaquette']['tmp_name'], "../images/jaquettes/", $jaquette, 150, 70);
  3. }


 
envoi_image() étant, vous vous en doutez, le script qui écrit l'image sur le serveur.
 
Le problème, c'est que, que je sélectionne une jaquette ou pas, le script fait comme si il en envoyait une, puisque envoi_image teste le format de l'image (ne veut que du jpg) et me dit qu'il est invalide.
 
Je sais pas si j'arrive à bien me faire comprendre, mais si vous comprenez, et surtout que vous avez la solution, n'hésitez pas :)
 
Merci !


Message édité par cosmoschtroumpf le 23-06-2004 à 12:10:56
Reply

Marsh Posté le 23-06-2004 à 10:20:39   

Reply

Marsh Posté le 23-06-2004 à 10:53:34    

pas bien compris non .... le code de envoi_image ?


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 23-06-2004 à 11:20:10    

Bon, reprenons.
Mon formulaire a un champ <input type="file">. Je suis censé pouvoir ne pas mettre de fichier dans ce champ, et que ça marche. Mais avec le test plus haut, qu'il y aie un fichier ou pas dans ce champ, le script agit comme si il y avait un fichier.
Mouais, c'est pas forcément plus clair, mais peut-être un peu.
 
Voici envoi_image :
 

Code :
  1. function envoi_image($imageDest, $repDest, $nomDest, $largeurDest, $compression) {
  2.   $tailleImage = getimagesize($imageDest);
  3.   $repTemp = $repDest . "tmp/";
  4.   $nomDest .= ".jpg";
  5.   if ($tailleImage[2] != 2) { // si le type de l'image n'est pas jpeg (type n∞2) : erreur
  6.     die("<p>Les formats autres que le jpg/jpeg ne sont pas support&eacute;s par le serveur.<br />Veuillez enregistrer votre image sous ce format.<br /><a href=\"index-catalogue.php\">Retour</a></p>" );
  7.   }
  8.   if (is_uploaded_file($imageDest)) {
  9.     if (copy($imageDest, $repTemp.$nomDest)) {
  10.       // code original par loic piquart, www.piquart.org
  11.       $image = $repTemp.$nomDest;
  12.       $img = imagecreatefromjpeg($image);
  13.       $taille = getimagesize($image);
  14.       $largeur = $taille[0];
  15.       $hauteur = $taille[1];
  16.       if ($largeur > $largeurDest) {
  17.         $entroplargeur = $largeur - $largeurDest;
  18.         $largeur2 = $largeur - $entroplargeur;
  19.         $hauteur2 = round(($largeur2/$largeur)*$hauteur);
  20.         $img2 = imagecreatetruecolor($largeur2,$hauteur2) or die("<br /><b>Impossible de cr&eacute;er la nouvelle image</b>" );
  21.         imagecopyresized($img2, $img, 0,0,0,0, $largeur2, $hauteur2, $largeur, $hauteur) or die ("<br /><b>Impossible de copier l'image</b>" );
  22.         imagejpeg($img2,$image,$compression) or die ("<br /><b>Impossible de compresser l'image</b>" );
  23.       }
  24.       copy ($image,$repDest.$nomDest) or die("<br /><b>Impossible d'enregistrer l'image $image sur $repDest</b>" );
  25.       unlink($image) or die("<br /><b>Impossible de supprimer le fichier temporaire. V&eacute;rifiez que vous avez bien les droits d'acc&egrave;s.</b>" );
  26.     } else {
  27.       die("<p>La copie du fichier a &eacute;chou&eacute;</p>" );
  28.     }
  29.   } else {
  30.     die("<p>Le fichier n'a pas &eacute;t&eacute; envoy&eacute; (trop gros ? plus d'espace restant ?)</p>" );
  31.   }
  32. }


 
Et donc, lorsque mon input file est vide, j'ai un problème de fichier qui n'est pas un fichier jpg, alors que lorsque je met une image, ça marche impec.
 
J'espère que c'est plus compréhensible :D
 
merci

Reply

Marsh Posté le 23-06-2004 à 11:32:01    

Teste plutot  
 

Code :
  1. if (isset($_FILES['jaquette']) && $_FILES['jaquette']!= "" ) {
  2.       envoi_image($_FILES['jaquette']['tmp_name'], "../images/jaquettes/", $jaquette, 150, 70);
  3.   }


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 23-06-2004 à 12:10:27    

ok, avec isset($_FILES['jaquette']['tmp_name']) && $_FILES['jaquette']['tmp_name'] != "" ça marche.
 
Merci beaucoup ! :D (même si j'aurais pu réfléchir un peu pour trouver ça [:kiki] )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed