upload de jpg et bmp impossible

upload de jpg et bmp impossible - PHP - Programmation

Marsh Posté le 05-10-2005 à 18:18:22    

Bonjour,  
j'ai un petit soucis d'upload d'image. Le format gif passe très bien par contre le jpg et bmp ne passent pas, j'ai beau chercher depuis 3 jours, je ne trouve pas le problème...  
 
voici le code de reception de l'upload, qui est fait à l'aide d'un formulaire :  
 

Code :
  1. <?php
  2. require('connect1.php');
  3. ?>
  4. <html>
  5. <head>
  6. <link rel="stylesheet" href="style.css" type="text/css">
  7. </head>
  8. <?php
  9. if( isset($_POST['upload']) ) // si formulaire soumis  
  10.    {
  11.     $content_dir = '../photos/'; // dossier où sera déplacé le fichier  
  12.    $tmp_file = $_FILES['name_file']['tmp_name'];   }
  13.    
  14. if(!empty($descriptif) && !empty($format) && !empty($mots_cles) && !empty($lieu) && !empty($date))
  15.    {
  16.    print("<p class=titre>Descriptif : $descriptif<br>Format : $format<br>Mots-clés : $mots_cles<br>Lieu : $lieu<br>Date : $date<br></p>" );
  17.    }
  18. else if($name_file_size>200000)
  19.    {
  20.    print("<p class=titre>fichier trop lourd" );
  21.    }
  22. else
  23.    {
  24.    print("<p class=titre>remplir tous les champs</p><br>" );
  25.    exit;
  26.    }
  27. if( !is_uploaded_file($tmp_file) )
  28.     {
  29.     print("<p class=titre>le fichier est introuvable<br></p>" );
  30.      }
  31. // on vérifie maintenant l'extension  
  32. $type_file = $_FILES['name_file']['type'];
  33. echo "uiju : $type_file<br>";
  34. if(!strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif'))
  35. //if($tmp_file_type!="image/gif" && $tmp_file_type!="image/jpg" && $tmp_file_type!="image/jpeg" && $tmp_file_type!="image/bmp" )  
  36.       {
  37.     exit("<p class=titre>le fichier n'est pas une image</p>" );
  38.       }
  39. // on copie le fichier dans le dossier de destination  
  40. $name_file = $_FILES['name_file']['name'];
  41. if( !move_uploaded_file($tmp_file, $content_dir.$name_file) )
  42.     {
  43.     exit("Impossible de copier le fichier" );
  44.       }
  45. echo '<p class=titre>Le fichier a bien été uploadé</p><br>';
  46. $sql="INSERT INTO photos VALUES ('','$name_file','$id_theme','$descriptif','$id_photographe','$format','$mots_cles','$lieu','$date')";
  47. $req=mysql_query($sql) or die ('Erreur SQL <br>').$sql.'<br>'.mysql_error();
  48. $sql3="SELECT nom_photographe FROM photographe WHERE id_photographe='$id_photographe'";
  49. $req3=mysql_query($sql3) or die ('Erreur SQL3 <br>').$sql3.'<br>'.mysql_error();
  50. $nbr3=mysql_num_rows ($req3);
  51. for($i=0;$i<$nbr3;$i++)
  52.    {
  53.    list ($nom_photographe) = mysql_fetch_array($req3);
  54.    }
  55.    include 'miniature.php';
  56. ?>
  57. </html>

Reply

Marsh Posté le 05-10-2005 à 18:18:22   

Reply

Marsh Posté le 05-10-2005 à 18:27:39    

T'as cherché combien de temps?
Par ce qu'on a pas besoin de beaucoup de compétences en programmation pour voir rapidement qu'il y a écrit jpg et jpeg quelque part dans le code.

Reply

Marsh Posté le 05-10-2005 à 18:40:06    

jvois pas ce que tu veux dire ?

Reply

Marsh Posté le 05-10-2005 à 18:45:51    

heu, oups, j'avais lu en diagonale et je viens de réaliser que le probléme est pas si simple qu'il n'y parait. :D
 
Pour tes images qui ne passent pas, ca t'affiche quoi dans le navigateur?

Reply

Marsh Posté le 05-10-2005 à 18:47:24    

Peux-tu montrer la page de formulaire d'envoi stp ?
Juste le formulaire si la page est trop longue.

Reply

Marsh Posté le 05-10-2005 à 19:02:23    

et voici :  

Code :
  1. <?php
  2.  require('connect1.php');
  3. ?>
  4. <HTML>
  5. <head>
  6. <title>PHOTONLINE</title>
  7. <link rel="stylesheet" href="style.css" type="text/css">
  8. </head>
  9. <form action="recept_photos.php" method="post" enctype="multipart/form-data">
  10. <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  11. <TABLE BORDER=0>
  12. <TR>
  13.      <TD height="50" width="20">&nbsp;</TD><TD height="50" width="70">&nbsp;</TD><TD height="50">&nbsp;</TD>
  14.    </TR>
  15. <TR>
  16.  <TD width="20">&nbsp;</TD>
  17.  <TD><span class="titre">Sélectionnez votre nom :</span></TD>
  18.  <TD >
  19.  <?php
  20.   $sql1="SELECT * FROM photographe;";
  21.   $req1=mysql_query($sql1) or die ('Erreur SQL <br>').$sql1.'<br>'.mysql_error();
  22.   $nb=mysql_num_rows ($req1);
  23.   echo "<select style=\"font-family:Trebuchet MS;font-size:11px;font-color:#757575\" name=\"id_photographe\">";
  24.   for($i=0;$i<$nb;$i++)
  25.    {
  26.    list($id_photographe,$nom_photographe,$prenom_photographe)=mysql_fetch_array($req1);
  27.    print ("<option value=\"$id_photographe\">$prenom_photographe $nom_photographe" );
  28.    }
  29.   echo "</select>";
  30.  ?>
  31.  </TD>
  32. </TR>
  33. <TR>
  34.  <TD width="20">&nbsp;</TD>
  35.  <TD><span class="titre">Sélectionnez un thème :</span></TD>
  36.  <TD >
  37.  <?php
  38.  $sql2="SELECT id_theme,nom_theme FROM theme order by nom_theme;";
  39.  $req2=mysql_query($sql2) or die ('Erreur SQL <br>').$sql2.'<br>'.mysql_error();
  40.  $nb2=mysql_num_rows ($req2);
  41.  echo "<select style=\"font-family:Trebuchet MS;font-size:11px;font-color:#757575\" name=\"id_theme\">";
  42.  for($i=0;$i<$nb2;$i++)
  43.   {
  44.   list($id_theme,$nom_theme)=mysql_fetch_array($req2);
  45.   echo "<option value=\"$id_theme\">$nom_theme";
  46.   }
  47.  echo "</select>";
  48.  ?>
  49.  </TD>
  50. </TR>
  51. <TR>
  52.  <TD width="20">&nbsp;</TD>
  53.  <TD ><span class="titre">Entrez le titre de la photo :</span></TD>
  54.  <TD><input type="text" name="descriptif"></TD>
  55. </TR>
  56. <TR>
  57.  <TD width="20">&nbsp;</TD>
  58.  <TD><span class="titre">Entrez le format de la photo :</span></TD>
  59.  <TD><input type="text" name="format"></TD>
  60. </TR>
  61. <TR>
  62.  <TD width="20">&nbsp;</TD>
  63.  <TD><span class="titre">Entrez les mots-clés de la photo :</span></TD>
  64.  <TD ><input type="text" name="mots_cles"></TD>
  65. </TR>
  66. <TR>
  67.  <TD width="20">&nbsp;</TD>
  68.  <TD><span class="titre">Entrez le lieu de la prise de vue :</span></TD>
  69.  <TD ><input type="text" name="lieu"></TD>
  70. </TR>
  71. <TR>
  72.  <TD width="20">&nbsp;</TD>
  73.  <TD><span class="titre">Entrez la date de la prise de vue :</span></TD>
  74.  <TD ><input type="text" name="date"></TD>
  75. </TR>
  76. <TR>
  77.  <TD width="20">&nbsp;</TD>
  78.  <TD><span class="titre">Choisissez une photo :</span></TD>
  79.  <TD ><input name="name_file" type="file"></TD>
  80. </TR>
  81. <TR>
  82.  <TD width="20">&nbsp;</TD>
  83.  <TD><span class="titre1">uniquement jpg, bmp et gif</span></TD>
  84.  <TD></TD>
  85. </TR>
  86. <TR>
  87.  <TD width="20">&nbsp;</TD>
  88.  <TD >&nbsp;</TD>
  89.  <TD align="right"><input type="submit" name="upload" value="Envoyer" style="font-family:Trebuchet MS;font-size:9px;font-color:#757575"></TD>
  90. </TR>
  91. </TABLE>
  92. </form>
  93. </html>

Reply

Marsh Posté le 05-10-2005 à 19:30:59    

J'vais surement dire une connerie, mais on sait jamais.
es-tu sûr que tes jpegs ne font pas plus de 100.000 octets.
 
Autrement, essaye plutot de rajouter le type pjpeg dans ta condition, gif, bmp, jpeg, jpg et pjpeg.

Reply

Marsh Posté le 05-10-2005 à 19:44:43    

non ils ne sont pas aussi lourds et avec le pjpeg meme résultat... snif...

Reply

Marsh Posté le 05-10-2005 à 20:03:02    

j'aime bocou ton tableau inutile

Reply

Marsh Posté le 05-10-2005 à 21:58:56    

1/ Quel est le comportement exacte du serveur lors de l'envoi d'un jpg ?
2/ Quel est alors l'affichage demandée en ligne 36 ?
3/ C'est sûrement les balises html en majuscules : perso ça me fait mal aux yeux et le serveur doit être dans le même cas [:ddr555]


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-10-2005 à 21:58:56   

Reply

Marsh Posté le 05-10-2005 à 22:04:33    

Également je te conseille plutôt l'utilisation de exif_imagetype plutôt que de te baser sur le $_FILES (apparemment, les infos du $_FILES sont données par le navigateur).


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-10-2005 à 22:15:19    

exif_imagetype ne marche pas non plus, j'ai testé.
Le serveur m'affiche juste que le fichier n'est pas une image...
ligne 36 maffiche le nom du fichier avec lextension image.jpg

Reply

Marsh Posté le 05-10-2005 à 22:53:32    

l'extension est bien en minuscule?

Reply

Marsh Posté le 05-10-2005 à 23:00:07    

Bon, j'ai essayé ton script en local chez moi, il fonctionne bien.
j'ai juste viré les appels à la base de données et autrement, ça fonctionne.

Reply

Marsh Posté le 05-10-2005 à 23:42:31    

Lignes 35-36

Code :
  1. $type_file = $_FILES['name_file']['type']; 
  2. echo "uiju : $type_file<br>";


Ça dit quoi ste chose ???


---------------
HAHAHA I M USING TEH INTERNET
Reply

Sujets relatifs:

Leave a Replay

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