php Galerie photos : Erreur upload images RESOLU

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

php Galerie photos : Erreur upload images RESOLU

Message le Mer Aoû 11, 2010 13:14

Salut, :D :D

J'ai une galerie photos que j'ai codé en php. Mais j'ai un souci lors de l'uploa d'images. Il semble qu'en fonction de certaines images ma variable $fichier soit vide ou non. Il s'agit d'images jpeg. Avec certaines images, pas de problèmes et avec d'autres, ça marche pas.

Voic mon message d'erreur :

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in F:\MesSitesWamp\test2\admin\galerie_photos_ajout.php on line 52

Code: Tout sélectionner
$taille_ko = 4000;//400 ko
$taille_max = $taille_ko*1024;//taille en octets
$dest_dossier = 'admin/img_lib_orig/';
$height=100;
$width=150;

//=========================================================
//                     TESTS
//=========================================================

if (isset($_FILES['fichier']))
{
   foreach ($_FILES['fichier']['name'] as $key => $value)
   {
      $fichier=$value;//nom reel de l'image (juse le nom, pas le chemin)
      $size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets
      $tmp=$_FILES['fichier']['tmp_name'][$key];//nom complet (chemin complet)temporaire de l'image (sur le serveur)
      $type=$_FILES['fichier']['type'][$key];//type de l'image
      $name=$_FILES['fichier']['name'][$key];
      
   
   
      if (!empty($fichier)) //============  SI CHAMP REMPLI  ===========================================================
      {
         $array= getimagesize($tmp);//getimagesize reprend le type en paramètre 3. Le type 2 correspond au JPEG
         $type= $array[2];
         
         
         if ($type==1 OR $type==2)//============  SI TYPE OK  =========================================================
         {
            if((substr($name,-3) == "jpg" )OR (substr($name,-3) == "gif"))//============  SI EXTENSION OK ============
            {
                if((file_exists($tmp))and($size < $taille_max))//============  SI TAILLE OK ==========================
                {
                     $dest_fichier = basename($name);
                     $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                     // un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_"
                     $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
                     //$dest_fichier = str_replace(" ","",$dest_fichier);
                     
                     // pour ne pas écraser un fichier existant
                     while(file_exists($dest_dossier . $dest_fichier))
                     {
                        //echo 'image EXISTE';
                        $dest_fichier = rand().$dest_fichier;
                     }
                     
                      $taille= getimagesize($tmp);
                     $L=$taille[0];
                     $H=$taille[1];
                     $newL=900;         
                     $newH=ceil(($H/$L)*$newL);
                     //echo $newL.'x'.$newH;
                     
                     if(move_uploaded_file($tmp,$dest_dossier.$dest_fichier))  //Met l'image de taille normale dans $dest_dossier . $dest_fichier
                     {
                     //================ CREATION NORMALE =======================================================
                     $source = imagecreatefromjpeg("admin/img_lib_orig/".$dest_fichier.""); // La photo est la source
                     $destination = imagecreatetruecolor($newL,$newH); // On crée la miniature vide

                     // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
                     $largeur_source = imagesx($source);
                     $hauteur_source = imagesy($source);
                     $largeur_destination = imagesx($destination);
                     $hauteur_destination = imagesy($destination);

                     // On crée la miniature
                     imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
                     imagejpeg($destination, "admin/tempresize/".$dest_fichier."");//destination de la miniature
                     
                     rename("admin/tempresize/".$dest_fichier."","admin/img_lib_orig/".$dest_fichier."");
                           
                     //================ CREATION MINIATURE =======================================================
                     $source = imagecreatefromjpeg("admin/img_lib_orig/".$dest_fichier.""); // La photo est la source
                     $destination = imagecreatetruecolor($width,$height); // On crée la miniature vide

                     // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
                     $largeur_source = imagesx($source);
                     $hauteur_source = imagesy($source);
                     $largeur_destination = imagesx($destination);
                     $hauteur_destination = imagesy($destination);

                     // On crée la miniature
                     imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
                     imagejpeg($destination, "admin/img_lib_thumbs/".$dest_fichier."");//destination de la miniature
                     //========================================================================
                     //   ENREGISTREMENT CHEMIN  + nom IMAGE UPLOADEES DANS BDD ALBUM NON CLASSEES !!!
                     //========================================================================
                     
                     $sql = "INSERT INTO image (name_image,id_album,path_image_thumbs,path_image) VALUES ('$dest_fichier','1','admin/img_lib_thumbs/".$dest_fichier."','admin/img_lib_orig/".$dest_fichier."')";
                     mysql_query($sql) or die(mysql_error());

                     }
                     else
                     {
                        //echo "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
                     }
                     

                }
               
            }   
         }
      
      }

      
   }
   


}


Si vous avez une petite idée.

Merci :D :D

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités