Echec upload d'une photo via script Php

Echec upload d'une photo via script Php - PHP - Programmation

Marsh Posté le 23-08-2005 à 01:11:08    

J'ai écrit un petit script d'upload en Php pour mon site perso, je fais différent tests, et curieusement il y a des photos (2 ou 3 sur 50) que je n'arive pas a uploader
Les images (JPG) sont issues du même appareil, pas de pb de poids de fichier non plus.
 
Cela vous est-il déjà arrivé ? un JPG corrompu ou un truc dans ce genre ? :-?  
 
merci

Reply

Marsh Posté le 23-08-2005 à 01:11:08   

Reply

Marsh Posté le 23-08-2005 à 01:20:24    

Quelle est l'erreur exactement? Le fichier n'arrive pas à être uploadé ou le fichier est uploadé, mais s'affiche mal depuis le serveur?
Peut-être qu'ils sont trop lourds et dépassent le timeout de ta config PHP ?


---------------
www.renderfarm.online
Reply

Marsh Posté le 23-08-2005 à 03:01:52    

c'est trop vague comme explication
 
quel type de script ?  
Ce script est-il intégré à une solution de création de site web tout en un (SPIP, PHPNuke)
On peut voir le code de ce script ?
on peut voir les jpeg incriminés qui provoquent le problème ? (stocke les sur imageshack.us)
 
Aller fait un effort

Reply

Marsh Posté le 23-08-2005 à 22:18:04    

Voici l'url de l'image => http://membres.lycos.fr/feer/temp/DSCN0002bis.JPG
 
A noter que cette image pese un peu plus de 2Mo et donc devrait normalement etre refusé par le script (image supérieure à 80ko) or le script m'affiche un echec.
En dehors de ça le script fonctionne bien sur les autres photos testées, seule 2 ou 3 sur 50 ne passent pas ...
 
Et le script (2 fichiers)
 
fichier index.php

Code :
  1. <?
  2. include("config.php" );
  3. if(!(isset($submit))){
  4. echo"<form enctype=\"multipart/form-data\" action=\"$PHP_SELF\" method=\"post\">
  5.     <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$sizemax\">
  6.     <input name=\"userfile\" type=\"file\">
  7.     <input type=\"submit\" name=\"submit\" value=\"Envoyer\">
  8.     </form><br>";
  9. }
  10. else
  11.     if(file_exists($dir.$userfile_name)){
  12.         echo"Un fichier ayant le meme nom est deja present";
  13.     }
  14.     elseif($userfile_size>(1024 * 8000)){
  15.         echo"Fichier est trop gros";
  16.     }
  17.     elseif(bad_ext($userfile_name)){
  18.         $verif=substr (strrchr ($userfile_name, "." ), 1 );
  19.         echo"Mauvaise extension";
  20.     }
  21.     else{
  22.         copy($userfile,$dir.$userfile_name);
  23.         if(is_uploaded_file($userfile)){
  24.         echo "Upload réussi";
  25.         }
  26.         else{
  27.             echo "Echec";
  28.         }
  29.     }
  30. }
  31. ?>


 
fichier config.php

Code :
  1. <?
  2. function bad_ext($filename){
  3. global $ext;
  4. $exp=explode(".",$filename);
  5. $nb=count($exp);
  6. for($i=0;$i<$nb;$i++){
  7.    if($exp[($nb-1)]==$ext[$i]){
  8.    return false;
  9.    exit;
  10.    }
  11. }
  12. return true;
  13. }
  14. $ext[0]="gif";
  15. $ext[1]="jpg";
  16. $ext[2]="png";
  17. $userfile_name = str_replace(' ', '_',$userfile_name);
  18. $userfile_name = str_replace('\'', '',$userfile_name);
  19. $userfile_name = strtolower(time()."_".$userfile_name);
  20. elseif (time()<1125525600){
  21. $dir="temp/aout05/";
  22. }
  23. elseif (time()<1128117600){
  24. $dir="temp/sep05/";
  25. }
  26. ?>

Reply

Marsh Posté le 23-08-2005 à 23:15:45    

parser les erreurs eventuelles d'upload peut être interessant avec $_FILES['pouetpouet']['error']

Reply

Marsh Posté le 23-08-2005 à 23:19:31    

1024 * 8000
ca fait pas 80 ko chez moi mais presque 8 Mo.
Par contre, si tu dis que tes trois fichiers font un peu plus de 2 Mo, alors j'aurais tendance à dire que soit php est réglé pour refuser les upload de plus de 2 Mo, soit que ton script est réglé ainsi. D'ailleur, elle a quoi comme valeur la constante MAX_FILE_SIZE. ;)

Reply

Marsh Posté le 24-08-2005 à 00:04:21    

Non ce n'est pas dans cette direction qu'il faut chercher, j'upload es fichiers plus gros et plus petit que celui-ci également.
Ce n'est pas un probleme de taille.
 
Je suis a peu près persuadé que le pb vient de l'image, mais j'aimerais en etre convaincu ;)
 
Quant au 1024 * 8000 ... ça fait en effet 8 Mo ... c'est un cop/col un peu rapide, je faisais des tests...

Reply

Marsh Posté le 24-08-2005 à 00:59:55    

il est tres possible que ce soit le serveur qui bloque le upload a 2 mo. Sous Free c'est comme cela, et sous easyphp aussi (par defaut).
J'avais du avoir le meme probleme par rapport a ça.
 
Ou alors tu envoi ca sur ton serveur Web, peut etre que tu a des interruptions de ta connection (supposition).
 
Et si tu est persuader que ce soit tel image précisement, essaye des les uploader 1 par 1, tu verra par toi meme. regarde si c'est toujours la meme image qui est affecter.


Message édité par Badze le 24-08-2005 à 01:00:57
Reply

Marsh Posté le 24-08-2005 à 01:15:28    

Je le repete ce n'est pas un probleme de taille, j'upload des photos plus volumineuses, et pas non plus un probleme de time-out.

Citation :

Et si tu est persuader que ce soit tel image précisement, essaye des les uploader 1 par 1, tu verra par toi meme. regarde si c'est toujours la meme image qui est affecter.


 
là aussi je le repete, au risque de devenir lourd :D
 
c'est toujours les memes photos (2 ou 3 sur une cinquantaine de photos)

Reply

Marsh Posté le 24-08-2005 à 01:28:24    

je viens d'essayer avec 2 scripts php d'upload ... ça ne marche pas.
c'est donc sur, mon script fonctionne (c'est déjà ça) mais histoire de ne pas mourrir idiot, j'aimerais savoir ce qu'a mon image ? :-/

Reply

Marsh Posté le 24-08-2005 à 01:28:24   

Reply

Marsh Posté le 24-08-2005 à 12:52:54    

ba regarde dabord quel images sont concernés meme si c'est lourd, enfin 50 images ,c'est pas la mort.
Mais je trouve ça bizarre, meme une image infecté devrai etre uploadé.

Reply

Marsh Posté le 24-08-2005 à 12:56:28    

Peut être un probléme dans le nom de fichier dans ce cas.

Reply

Marsh Posté le 24-08-2005 à 13:06:58    

Citation :

ba regarde dabord quel images sont concernés meme si c'est lourd, enfin 50 images ,c'est pas la mort.


 :heink:  
c'est justement le sujet de ce topic, j'ai 2 ou 3 images qui ne passent, je sais donc par définition quelles images sont concernées.
je ne comprends pas ce que tu veux dire :??:
 

Citation :

Peut être un probléme dans le nom de fichier dans ce cas.


 
non plus, je l'ai renommé, c'est pareil.
 
j'admet que c'est curieux, mais faites le test sur un script d'upload quelconque, vous admettrez le probleme surement plus facilement ;)  
l'image est là => http://membres.lycos.fr/feer/temp/DSCN0002bis.JPG


Message édité par feer le 24-08-2005 à 13:08:23
Reply

Marsh Posté le 24-08-2005 à 15:27:28    

tente de changer en changeant son format

Reply

Marsh Posté le 24-08-2005 à 15:40:59    

tu as essayé de faire ce que t'a dit pmusa ? (Avec userfile le nom du fichier uploadé)
 

Code :
  1. switch($_FILES['userfile']['error'])
  2.             {
  3.                 case 1 :
  4.                     echo("Le fichier téléchargé excède la taille de upload_max_filesize, configuré dans le php.ini." );
  5.                     break;
  6.                 case 2 :
  7.                     echo("Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML" );
  8.                     break;
  9.                 case 3 :
  10.                     echo("Le fichier n'a été que partiellement téléchargé" );
  11.                     break;
  12.                 case 4 :
  13.                     echo("Aucun fichier n'a été téléchargé" );
  14.                     break;
  15.                 case 6 :
  16.                     echo("Un dossier temporaire est manquant. Introduit en PHP 4.3.10 et PHP 5.0.3" );
  17.                     break;
  18.            
  19.             }

Reply

Marsh Posté le 24-08-2005 à 22:55:01    

Badze a écrit :

tente de changer en changeant son format


 
en fait je n'ai pas besoin de changer de format pour arriver a uploader l'image, si je l'ouvre et la sauvegarde (avec Psp par exemple) ça passe.
il y a une vérolle dans cette image, c'est une certitude.
 
je vais aller voir du coté de "Software" pour voir si il n'existe pas un soft permettant de detecter une éventuelle corruption dans le fichier.
 
merci de votre aide

Reply

Marsh Posté le 25-08-2005 à 10:50:15    

essaye de l'ouvrir avec le bloc note pour voir si il n'y a pas des mots chelou que tu peux distinguer ou du code eventuellement...


---------------
intralase surgery [:cerveau love]
Reply

Marsh Posté le 25-08-2005 à 13:59:15    

et pourquoi pas avec un editeur Hexa, yen a qui pulullent sur le net

Reply

Marsh Posté le 25-08-2005 à 17:23:51    

J'ai ouvert avec un éditeur Hexadécimal, rien vu de particulier ... que se soit une iamge qui pass ou ne passe pas.

Reply

Sujets relatifs:

Leave a Replay

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