$_files : Fichier telecharge mais introuvable
Résolu
Saurnarion
-
DoulyCreations Messages postés 187 Date d'inscription Statut Membre Dernière intervention -
DoulyCreations Messages postés 187 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye de télécharger un fichier via un formulaire classique mais une fois télécharger, le fichier est introuvable par le système. Mais où qu'il est ??? :-).
Logiciel : WAMP, php 5.2.6, Apache 2.2.8, window XP, compte administrateur
Dans PHP.ini, le téléchargement est autorisé avec file_uploads = On et une limite à 50 Mo (upload_max_filesize = 50M). Le répertoire temporaire est upload_tmp_dir = "c:/wamp/tmp".
Lorsque je télécharge mon fichier, en faisant un print_r de la variable accueillant le fichier à télécharger, j'ai :
Array ( [ajtDoc] => Array ( [name] => X-65F.pdf [type] => application/pdf [tmp_name] => C:\wamp\tmp\php34.tmp [error] => 0 [size] => 2928018 ) )
Donc d'après cette ligne, le téléchargement s'est correctement effectué ([error] => 0) et le fichier devrait, le temps de l'exécution du script, se trouver là (C:\wamp\tmp\php34.tmp).
Or lorsque, juste après le print_r, je rajoute la ligne :
move_uploaded_file($_FILES['ajtDoc']['tmp_name'], $chemin_destination.$_FILES['ajtDoc']['name']);
j'ai l'erreur suivante :
Warning: move_uploaded_file(c:\wamp\www\convention\X-65F.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\scsm\convention\modif\document\ajout.php on line 12
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php37.tmp' to 'c:\wamp\www\convention\X-65F.pdf' in C:\wamp\www\scsm\convention\modif\document\ajout.php on line 12
avec :
$chemin_destination = "c:\\wamp\\www\\convention\\";
J'ai fait les "echo" suivant :
echo $_FILES['ajtDoc']['tmp_name'] => C:\wamp\tmp\php37.tmp
echo $chemin_destination.$_FILES['ajtDoc']['name'] => c:\wamp\www\convention\X-65F.pdf (répertoire qui existe)
D'après ce que je comprends, le fichier téléchargé dans le répertoire temporaire n'est pas trouvé. Pourtant, il n'y a pas eu d'erreur et dans le log, à part les deux lignes précédemment citées, aucune autre erreur est remontée.
Ca sent l'erreur gros comme la Porte d'Aix mais je ne la vois pas.
Mais que se passe t-il ?
J'essaye de télécharger un fichier via un formulaire classique mais une fois télécharger, le fichier est introuvable par le système. Mais où qu'il est ??? :-).
Logiciel : WAMP, php 5.2.6, Apache 2.2.8, window XP, compte administrateur
Dans PHP.ini, le téléchargement est autorisé avec file_uploads = On et une limite à 50 Mo (upload_max_filesize = 50M). Le répertoire temporaire est upload_tmp_dir = "c:/wamp/tmp".
Lorsque je télécharge mon fichier, en faisant un print_r de la variable accueillant le fichier à télécharger, j'ai :
Array ( [ajtDoc] => Array ( [name] => X-65F.pdf [type] => application/pdf [tmp_name] => C:\wamp\tmp\php34.tmp [error] => 0 [size] => 2928018 ) )
Donc d'après cette ligne, le téléchargement s'est correctement effectué ([error] => 0) et le fichier devrait, le temps de l'exécution du script, se trouver là (C:\wamp\tmp\php34.tmp).
Or lorsque, juste après le print_r, je rajoute la ligne :
move_uploaded_file($_FILES['ajtDoc']['tmp_name'], $chemin_destination.$_FILES['ajtDoc']['name']);
j'ai l'erreur suivante :
Warning: move_uploaded_file(c:\wamp\www\convention\X-65F.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\scsm\convention\modif\document\ajout.php on line 12
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php37.tmp' to 'c:\wamp\www\convention\X-65F.pdf' in C:\wamp\www\scsm\convention\modif\document\ajout.php on line 12
avec :
$chemin_destination = "c:\\wamp\\www\\convention\\";
J'ai fait les "echo" suivant :
echo $_FILES['ajtDoc']['tmp_name'] => C:\wamp\tmp\php37.tmp
echo $chemin_destination.$_FILES['ajtDoc']['name'] => c:\wamp\www\convention\X-65F.pdf (répertoire qui existe)
D'après ce que je comprends, le fichier téléchargé dans le répertoire temporaire n'est pas trouvé. Pourtant, il n'y a pas eu d'erreur et dans le log, à part les deux lignes précédemment citées, aucune autre erreur est remontée.
Ca sent l'erreur gros comme la Porte d'Aix mais je ne la vois pas.
Mais que se passe t-il ?
4 réponses
Bonjour,
J'ai regardé vraiment vite fait et j'ai vu une chose étrange:
Ca ne serait pas plutot :
J'ai regardé vraiment vite fait et j'ai vu une chose étrange:
$chemin_destination = "c:\\wamp\\www\\convention\\";
Ca ne serait pas plutot :
$chemin_destination = "c:\wamp\www\convention\";
Merci de ta réponse DoulyCreations,
$chemin_destination = "c:\wamp\www\convention\"; va causer un problème de compilation php puisque l'\ échappant le caractère suivant les " finales ne vont pas être prises comme clôture d'une déclaration de variable string mais faisant partie de cette variable.
Cependant, il est vrai que j'aurai pu mettre :
$chemin_destination = "c:\wamp\www\convention\\";
J'ai quand même essayé avec cette dernière ligne mais cela ne fonctionne pas.
$chemin_destination = "c:\wamp\www\convention\"; va causer un problème de compilation php puisque l'\ échappant le caractère suivant les " finales ne vont pas être prises comme clôture d'une déclaration de variable string mais faisant partie de cette variable.
Cependant, il est vrai que j'aurai pu mettre :
$chemin_destination = "c:\wamp\www\convention\\";
J'ai quand même essayé avec cette dernière ligne mais cela ne fonctionne pas.