Petit problème avec $_FILES

Petit problème avec $_FILES - PHP - Programmation

Marsh Posté le 17-10-2008 à 09:37:11    

Bonjour à tous,
 
Je suis en train de créer le site de mon entreprise et plus particulièrement un module pour les utilisateurs
pour qu'ils puissent envoyer des fichiers personnel.
 
Mais j'ai un léger problème avec $_FILES, je vous montre mon code ca sera plus explicite:
 

Code :
  1. <?php
  2. if(isset($_POST['envoyer']))
  3. {
  4. if(!empty($_FILES['fichier']['name']))
  5. {
  6.  $nom_fichier=$_FILES['fichier']['name'];
  7.  $type_fichier=$_FILES['fichier']['type'];
  8.  $taille_fichier=$_FILES['fichier']['size'];
  9.  echo $nom_fichier."<br />";
  10.  echo $type_fichier."<br />";
  11.  echo $taille_fichier."<br />";
  12.  var_dump($nom_fichier);
  13. }
  14. else
  15. {
  16.  echo "<div align='center' style='color:#FF0000;'><b><u>Veuillez s&eacute;lectionner un fichier.</u></b></div><br /><br />";
  17. }
  18. }
  19. ?>
  20. <form method="POST">
  21. <div align="center">
  22. Fichier: <input type="file" name="fichier" />
  23. <input type="submit" name="envoyer" value="Envoyer" class="bouton" />
  24. </div>
  25. </form>


 
Je ne pense pas avoir fait d'erreurs et lorsque je test la variable $_FILES['fichier']['name'] pour savoir si l'utilisateur
a bien renseigner le formulaire, le script passe directement dans le else. Lorsque je ne fais pas le test et que j'affiche le var_dump($nom_fichier) il me dis que la variable est NULL.
 
PS: Je travail en local avec WAMP SERVER 2.0
 
Merci pour vos réponses.

Reply

Marsh Posté le 17-10-2008 à 09:37:11   

Reply

Marsh Posté le 17-10-2008 à 10:00:45    

Problème à moitié résolu, il fallait spécifier le type d'encodage des données dans
le formulaire:

 

<form method="POST" enctype="multipart/form-data">

 

Mais il m'affiche que le nom, la taille ainsi que le type sont à 0 et NULL.


Message édité par Metabolicman le 17-10-2008 à 10:08:06
Reply

Marsh Posté le 17-10-2008 à 11:08:24    

tu n'as pas d'erreur dans $_FILES['nom_du_fichier']['error'] ?

Code :
  1. <?      
  2. if ($_FILES['nom_du_fichier']['error']) {
  3.          switch ($_FILES['nom_du_fichier']['error']){
  4.                   case 1: // UPLOAD_ERR_INI_SIZE
  5.                   echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
  6.                   break;
  7.                   case 2: // UPLOAD_ERR_FORM_SIZE
  8.                   echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !" );
  9.                   break;
  10.                   case 3: // UPLOAD_ERR_PARTIAL
  11.                   echo "L'envoi du fichier a été interrompu pendant le transfert !";
  12.                   break;
  13.                   case 4: // UPLOAD_ERR_NO_FILE
  14.                   echo "Le fichier que vous avez envoyé a une taille nulle !" );
  15.                   break;
  16.          }
  17. }
  18. else {
  19. // $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
  20. // ce qui signifie qu'il n'y a eu aucune erreur
  21. }
  22. ?>


Message édité par flo850 le 17-10-2008 à 11:08:50

---------------

Reply

Marsh Posté le 17-10-2008 à 11:30:20    

Il n'y a pas d'erreur...
 
J'ai modifié mon script par un truc bidon:

Code :
  1. if(isset($_POST['envoyer']))
  2. {
  3. var_dump($_FILES);
  4. }
  5. <form method="POST"  enctype="multipart/form-data">
  6. <div align="center">
  7. <input type="hidden" name="MAX_FILE_SIZE" value="20000" />
  8. Fichier: <input type="file" name="fichier" />
  9. <input type="submit" name="envoyer" value="Envoyer" class="bouton" />
  10. </div></form>


 
Et voici le résultat de mon var_dump:
array(1) { ["fichier"]=> array(5) { ["name"]=> string(12) "banniere.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } }
 
Seule la propriété name fonctionne et tout le reste mystère....

Reply

Marsh Posté le 17-10-2008 à 11:37:25    

http://fr2.php.net/manual/fr/featu [...] errors.php
 
UPLOAD_ERR_FORM_SIZE  
Valeur : 2. Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.
 
T'as dû tenter avec un fichier > 20Ko. :spamafote:
 


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-10-2008 à 11:47:00    

Non, j'ai changer la valeur de MAX_FILE_SIZE par 20000000 et rien ne change


Message édité par Metabolicman le 17-10-2008 à 11:48:28
Reply

Marsh Posté le 17-10-2008 à 11:50:18    

il y a un changement a faire au niveau de la configuration du serveur ( et du php.ini )


---------------

Reply

Marsh Posté le 17-10-2008 à 11:52:40    

le php.ini est configuré à 2M donc le problème ne vient pas de là.
En outre j'avais déjà essayé de changer le champ upload_tmp_dir
dans php.ini mais rien ne change.

Reply

Marsh Posté le 17-10-2008 à 11:59:57    

il y ad'autres valeurs a changer : http://www.radinks.com/upload/config.php


---------------

Reply

Marsh Posté le 17-10-2008 à 12:02:01    

On dirait que c'est le MAX_FILE_SIZE qui n'est pas pris en compte !
Tu peux faire voir ton form STP !?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 17-10-2008 à 12:02:01   

Reply

Marsh Posté le 17-10-2008 à 12:08:00    

file_uploads->Déjà sur On
 
memory_limit->Réglé sur 128Mo donc pas besoin de changer
 
max_execution_time and max_input_time->Pas nécessaire de le modifier
je travail en local donc ca doit être relativement rapide au niveau de l'exécution
 
upload_max_filesize and post_max_size-> Déjà été modifié sans influence

Reply

Marsh Posté le 17-10-2008 à 12:09:20    

kao98 a écrit :

On dirait que c'est le MAX_FILE_SIZE qui n'est pas pris en compte !
Tu peux faire voir ton form STP !?


 
<form method="POST" enctype="multipart/form-data" style="margin:0;padding:0;">
<div align="center">
<input type="hidden" name="MAX_FILE_SIZE" value="20000000" />
 
Fichier: <input type="file" name="fichier" />
<input type="submit" name="envoyer" value="Envoyer" class="bouton" />
</div>
</form>

Reply

Marsh Posté le 17-10-2008 à 12:19:41    

Ben maintenant ca fonctionne je n'ai rien changé.... c'est à n'y rien comprendre

Reply

Sujets relatifs:

Leave a Replay

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