Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1454 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Upload de fichier en php

n°1863489
axelandre
Posté le 19-03-2009 à 12:16:36  profilanswer
 

Bonjour à tous,
 
Je souhaite uploader un fichier à partir d'un formulaire html. Je gère ensuite la sauvagarde du fichier avec php.
 
Le soucis c'est que durant cette dernière phase, il m'indique les erreurs suivantes :  
 
Warning: move_uploaded_file(C:\Documents and Settings/#004VR/Bureau/D-H/AT1_3857.JPG): failed to open stream: No such file or directory  
 
Warning: move_uploaded_file(): Unable to move 'C:\WINNT\TEMP\php4D30.tmp' to 'C:\Documents and Settings/#004VR/Bureau/D-H/AT1_3857.JPG'
 
Voici la partie du formulaire permettant l'upload :
 

Code :
  1. <input type=hidden name=MAX_FILE_SIZE  VALUE=4000000>
  2. Fichier : <input type=file name="fichier">


 
Je tiens à préciser que j'ai bien mis dans les attributs de la balise form l'attribut ENCTYPE="multipart/form-data"
 
Voici mon code php qui gère les erreurs et l'enregistrement du fichier temporaire vers le dossier cible :
 

Code :
  1. $content_dir = 'C:\Documents and Settings/#004VR/Bureau/D-H/'; // dossier où sera déplacé le fichier
  2.   $tmp_file = $_FILES['fichier']['tmp_name'];
  3.   if( !is_uploaded_file($tmp_file) )
  4.   {
  5.    exit("Le fichier est introuvable" );
  6.   }
  7.   // on vérifie maintenant l'extension
  8.   $type_file = $_FILES['fichier']['type'];
  9.   if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'pdf') && !strstr($type_file, 'ppt') && !strstr($type_file, 'doc') && !strstr($type_file, 'xls') )
  10.   {
  11.    exit("L'extension du fichier n'est pas accepté" );
  12.   }
  13.   // on copie le fichier dans le dossier de destination
  14.   $name_file = $_FILES['fichier']['name'];
  15.   if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
  16.   {
  17.    exit("Impossible de copier le fichier dans $content_dir" );
  18.   }


 
Si je fais un var_dump de $_FILE aucune erreur n'est retournée ! Pour infos voici le résultat du var_dump :
 

Code :
  1. array(1) {
  2.   ["fichier"]=>
  3.   array(5) {
  4.     ["name"]=>
  5.     string(12) "AT1_3857.JPG"
  6.     ["type"]=>
  7.     string(11) "image/pjpeg"
  8.     ["tmp_name"]=>
  9.     string(25) "C:\WINNT\TEMP\php4D30.tmp"
  10.     ["error"]=>
  11.     int(0)
  12.     ["size"]=>
  13.     int(1608970)
  14.   }
  15. }


 
Si quelqu'un a la solution je suis preneur.
 
Merci à tous

mood
Publicité
Posté le 19-03-2009 à 12:16:36  profilanswer
 

n°1863528
fluminis
Posté le 19-03-2009 à 13:30:32  profilanswer
 

'C:\Documents and Settings/#004VR/Bureau/D-H/'
 
=> deja est-ce que ce dossier existe ???
C'est ca que veut dire ton erreur
No such file or directory


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1863537
axelandre
Posté le 19-03-2009 à 13:55:38  profilanswer
 

Oui ce dossier existe, puisque j'ai copié le chemin d'accès directement à partir du navigateur.

n°1863557
axelandre
Posté le 19-03-2009 à 14:36:29  profilanswer
 

Et est-ce que le fait que je n'ai pas accès au chemin temporaire (car je suis au boulot) : quand je clique sur le dossier nommé "TEMP" message d'erreur me disant qu eje n'ai pas les autorisations pour ouvrir le dossier, cela peut avoir un impacte sur le traitement php ?

n°1863765
krifur
Posté le 19-03-2009 à 18:54:18  profilanswer
 

oui il faut aussi que php puisse ecrire dans le fichier TEMP, par defaut php utilise un repertoir spécifique (upload_tmp_dir variable dans php.ini)ou il est censé pouvoir ecrire... tu peux changer ce repertoire mais toujours verifier que php puisse écrire dedans...

n°1863768
grosbin
OR die;
Posté le 19-03-2009 à 19:01:56  profilanswer
 

:jap: +1 upload tmp dir + un rename après, l'affaire est jouée


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1863879
axelandre
Posté le 20-03-2009 à 09:24:20  profilanswer
 

Je n'ai pas trop compris grosbin. Que dois-je faire ?

n°1864167
Profil sup​primé
Posté le 20-03-2009 à 17:41:03  answer
 

Par rapport à ton script actuel il y a quelques soucis...
En premier, le MAX_FILE_SIZE que tu utilises provient du formulaire donc (même si le champs est caché) peut-être changé trèèès facilement.
 
Ensuite, je ne suis pas sûr mais je crois que le type du tableau $_FILES n'est pas fiable, utilise plutôt la fonction pathinfo :

Code :
  1. $ext = pathinfo($file, PATHINFO_EXTENSION)


Ensuite, à cause des différents emplois du caractère antislash, il faut le doubler pour l'utiliser :

Code :
  1. $file = "C:\\dir\\file";

n°1864637
axelandre
Posté le 23-03-2009 à 09:42:55  profilanswer
 

Alors j'ai essayé de doubler les antislash mais rien à faire, toujours la même erreur !
 
Je ne dois utiliser que des antislashs pour le répoertoire de destination ?
 
Merci beaucoup

n°1864869
fluminis
Posté le 23-03-2009 à 16:48:49  profilanswer
 

est ce que le fait que le chemin contienne des espaces poserait probleme ?
Fais un test avec des %20


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
mood
Publicité
Posté le 23-03-2009 à 16:48:49  profilanswer
 

n°1864889
stealth35
Posté le 23-03-2009 à 17:11:33  profilanswer
 


 
ca change rien, c'est une valeur limité par le php.ini, ou le htaccess, on pourrai mettre a 8To cette valeur si upload_max_filesize est a 2mo ca passera pas, et y'a aucun avantage a vouloir baisser cette valeur dans un hack

n°1864899
Profil sup​primé
Posté le 23-03-2009 à 17:31:50  answer
 

sauf qu'on a pas forcément accès au php.ini et peut-être qu'on souhaite une limite plus basse [:petrus75]

n°1864903
stealth35
Posté le 23-03-2009 à 17:36:31  profilanswer
 

c'est pour ca que je precise que y'a aussi le htaccess, pour la limite c'est pas le cas ici

n°1865084
fluminis
Posté le 24-03-2009 à 08:30:24  profilanswer
 

As-tu testé de mettre le fichier dans d'autres repertoires ?
Tu commences par la racine C:\\ et tu descends l'arborescence d'un niveau a chaque fois pour voir ou ca coince.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1865210
axelandre
Posté le 24-03-2009 à 11:36:59  profilanswer
 

Bonjour à tous, je suis passé par des fonctions php notament pour la taille et bizarrement ça a fonctionné !
 
Merci quand même à vous tous pour votre aide.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier en php

 

Sujets relatifs
Upload fichier supérieur à 300 Mo[Résolu] Problème d'upload de fichier
upload et download d'un fichierUpload de fichier en http sur mon serveur : Pb timeout sur la réponse
WSS 3.0 : upload d'un fichier depuis un poste client vers un site SPProblème pour un script d'upload de fichier
Problème erreur if[MediaWiki] Upload de fichier (marche que sur l'hebergement du wiki)
Filtrage de type de fichier dans la fenetre d'uploadUpload de fichier + création de répertoire: Erreur d'Array !!?
Plus de sujets relatifs à : Upload de fichier en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR