(Débutant) move_uploaded_file

move_uploaded_file (Débutant) - PHP - Programmation

Marsh Posté le 10-09-2009 à 16:25:26    

Bonjour,
 
Question toute simple.
 
J'utilise Uniform Server (même genre que XAMPP) sur mon ordi pour apprendre un peu le PHP mais j'ai du mal à gérer l'upload de fichiers.
J'ai suivi un tuto ( http://www.iutenligne.net/ressourc [...] ap3/2.html ) sur le net mais le fichier ne se copie pas dans le dossier désiré et il n'y a pas d'erreurs dans le log PHP.
 
Concernant le chemin donné en deuxième argument de la fonction move_uploaded_file, il est relatif au document root?
 

Code :
  1. $nomfichier = $_FILES['bob']['name'];
  2. $dest="toto/upload/";
  3. move_uploaded_file($nomfichier, $dest.$nomfichier)


 
C'est basique, mais ça devrait marcher, non? [:tinostar]
 
Merci d'avance :jap:

Reply

Marsh Posté le 10-09-2009 à 16:25:26   

Reply

Marsh Posté le 11-09-2009 à 11:30:05    

Et avec ceci (en supposant que ton champ de formulaire s'appelle bien "bob" ) :

Code :
  1. $nomfichier = $_FILES['bob']['name'];
  2. $nomfichiertemp = $_FILES['bob']['tmp_name'];
  3. $dest="toto/upload/";
  4. move_uploaded_file($nomfichiertemp, $dest.$nomfichier)


Sinon tu peux essayer de faire :

Code :
  1. var_dump($_FILES);


Et regarder le résultat :)

Reply

Marsh Posté le 11-09-2009 à 11:31:21    

C'est pas la sous-clé name qu'il faut utiliser (qui contient le nom original du fichier), mais [i]tmp_name, avec dedans le nom temporaire du fichier tel qu'il squatte sur le serveur.
 
Vérifie aussi que l'upload s'est bien passé avec les différentes erreurs possible :

Code :
  1. if(!isset($_FILES['bob']) {
  2.   // Fichier pas présent dans la requête (genre formulaire truandé)
  3. } else {
  4.   switch($_FILES['bob']['error']) {
  5.     case UPLOAD_ERR_OK:
  6.       move_uploaded_file($_FILES['bob']['tmp_name'], 'toto/upload/' . basename($_FILES['bob']['name']));
  7.       break;
  8.     case UPLOAD_ERR_INI_SIZE:
  9.     case UPLOAD_ERR_FORM_SIZE:
  10.       // Fichier trop gros (via directive php.ini upload_max_filesize ou input hidden MAX_FILE_SIZE);
  11.       break;
  12.    case UPLOAD_ERR_NO_FILE:
  13.       // Fichier pas uploadé (input file laissé vide)
  14.       break;
  15.   default:
  16.       // Autre erreur
  17. }


Voir la Référence sur les erreurs possible.
 
Et aussi n'oublie jamais les attributs enctype="multipart/form-data" et method="POST" sur le <form>, ce sont des oublis courants

Reply

Marsh Posté le 11-09-2009 à 11:31:32    

Reply

Marsh Posté le 11-09-2009 à 11:34:56    


Ta réponse est bien plus complète ça aidera sûrement plus kaman :)


---------------
Mon Feedback !
Reply

Marsh Posté le 11-09-2009 à 12:52:20    

Super, merci beaucoup, ça marche! :D
 
En fait, j'avais mal compris le site de php.net:
 

Citation :


bool move_uploaded_file  ( string $filename  , string $destination  )
 
filename
 
The filename of the uploaded file.


 
J'étais donc persuadé qu'il fallait mettre le filename et pas le path.
 
J'aurais du mieux lire :jap:

Reply

Sujets relatifs:

Leave a Replay

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