Uploader un fichier en php
RésoluJe suis actuellement entrain de développer un site en PHP à l'aide de la plateforme wamp server .
Cela fait un moment que j'essaye de uploader un fichier texte (.doc, .odt, .xls, .ppt, ...) et l'insérer dans mon serveur mais en vain .
Quelqu'un aurait une idée ?
voici mon code :
HTML :
<form enctype="multipart/form-data" action="test2.php" method="post">
<!-- MAX_FILE_SIZE doit précéder le champs input de type file -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<!-- Le nom de l'élément input détermine le nom dans le tableau $_FILES -->
Envoyez ce fichier : <input name="fichier" type="file" />
<input type="submit" value="Envoyer le fichier" />
</form>
pour le script en php:
<?php
$id_connex=mysql_connect("localhost","root","") or die("Connexion impossible");
mysql_query("use ONDA");
$content_dir = 'C:\wamp\www\ONDA\communication-QT1\.';
$tmp_file = $_FILES['fichier']['tmp_name'];
$test=$_FILES['fichier']['name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
echo "<pre>";
print_r($_FILES);
echo "</pre>"
?>
le problème c'est que j'ai toujours le else seulement qui s'execute : le fichier est introuvable
veuillez m'aidez s'il vous plait si vous avez une idée sur l'erreur que j'avais commis
23 réponses
Une difficulté d'upload de fichier sous PHP sur WAMP est constatée lorsque le script renvoie systématiquement que le fichier est introuvable malgré l'envoi via un formulaire multipart. Les échanges suggèrent de vérifier les contraintes PHP d'upload, l'utilisation de $_FILES et is_uploaded_file, et d'examiner le chemin de destination et les permissions, notamment via move_uploaded_file. Les réponses recommandent aussi de tester avec phpinfo pour vérifier les paramètres 'upload_max_filesize' et 'post_max_size', de supprimer ou d'ajuster MAX_FILE_SIZE, et d'utiliser un fichier plus petit pour diagnostiquer. D'autres conseils évoquent le fait que $_FILES peut être vide si l'envoi ne passe pas, et proposent d'afficher var_dump($_FILES) pour identifier l'absence ou l'erreur upload spécifique.
-
bonjour,
j'ai rencontrée un autre probème c'est que premièrement lorsque j'upload le fichier dans un dossier spécifique l'upload se fait d'une manière normale mais lorsque je change le dossier l'upload ne se fait pas lorsque j'affiche le tableau $Files j'ai mon array(error) qui reçoit 0 mais le message associé a la condition ne s'affiche pas ni le if ni le else , meme lorsque je vérifie aucun upload n'a été realisé au niveau du nouveau dossier si j'upload dans le premier dossier le fichier est uploadé mais si je change le chemin même pour un sous dossier du premier dossier ça ne marche pas si je mets le premier dossier dans un dossier le fichier est uploadé sinon aucun upload n'est réalisé -
Merci a vous tous j'ai trouvée la solution comme ce que le père a cité c'était un problème de configuration j'avais trouvé le file_uploads qui est en mode Off j'ai pénétrée le code php.ini ou j'ai modifée le off par on et dés que le serveur est redémarrée j'avais mon file_uploads qui est en ON et finalement mais deux script s'exécute avec le meme code qu'auparavant !!
-
Je ne te parle pas de fonction connues ou inconnues de php et je ne vois pas ce que la couleur bleue vient faire ici. Tu travailles peut-être avec un éditeur qui te met les mots en bleu, mais ça n'a qu'un lointain rapport avec l'éxécution de ton script.
Ce que je te demande, c'est de mettrephpinfo();
juste avant var_dump($_FILES);
et de regarder dans ce qui va s'afficher ce qui peut avoir un rapport avec l'upload -
justement puisque tous les fonctions utilisées ils sont écrites par une couleur standard normalement si ils sont connus par php ils seront écrites en bleu .
pour la version de mon php c'est PHP Version 5.2.1 j'ai pas compris qu'est ce que vous voulez dire par il y en a un paquet , fais une recherche sur le mot upload ?? -
Normalement, 78ko ça passe. Il y a bien une contrainte dans la configuration de php, mais elle n'est certainement pas si bas que ça.
Peux-tu mettre phpinfo(); au début de ton script pour voir ta version de php et son paramétrage ? il y en a un paquet, fais une recherche sur le mot upload. -
la taille de mon fichier est de 78 ko
ça reste toujours la contrainte de taille même si j'ai enlevée le input ?? -
J'ai copié-collé ton script et la seule manière que j'ai trouvée pour reproduire ton défaut, c'est d'envoyer un fichier trop gros. Je t'ai dit à plusieurs reprises d'essayer avec un fichier pas trop gros.
Quelle est la taille du fichier que tu essayes de télécharger ? -
<form method="POST" action="upload1.php" enctype="multipart/form-data">
Fichier : <input type="file" name="fichier" >
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
même si le meme message s'affiche :
array(0) { } -
Pour être plus explicite : enlève complètement la ligne <input type="hidden" name="MAX_FILE_SIZE">
De plus, je vois que tu as changé le nom du fichier pour 'userfile' au lieu de 'fichier'. Quel intérêt ? Mis à part de t'obliger à modifier partout ton script qui reçoit le fichier ? -
<form method="POST" action="upload1.php" enctype="multipart/form-data">
Fichier : <input type="file" name="userfile" >
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form> -
non j'ai enlevée le value pour ne pas avoir la contrainte de la taille
-
<input type="hidden" name="MAX_FILE_SIZE">
value= ??????? -
plutot :
d'accord le voici :
<form method="POST" action="upload1.php" enctype="multipart/form-data">
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE">
Fichier : <input type="file" name="userfile" >
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form> -
d'accord le voici :
<form method="POST" action="upload1.php" enctype="multipart/form-data">
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE">
Fichier : <input type="file" name="userfile" value="">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form> -
j'avais modifier le formulaire
Peux-tu montrer ton formuliare modifié ? -
si $_FILES est vide, c'est que tu n'as rien téléchargé du tout... Ça n'est même pas arrivé jusqu'à ton script, ton traitement n'y peut rien.
Tu n'aurais pas essayé avec un fichier trop gros par hasard ? essaye de charger un petit fichier court (<100k) -
Et lorsque j'ai ajoutée la fonction :
var_dump($_FILES); ça m'affiche :
array(0) { }
dans la page upload1.php -
Bonjour
si j'enlève le point qui se trouve a la fin du chemin j'ai le message d'erreur qui s'affiche :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\ONDA\upload1.php on line 6 -
je ne me suis rendu compte de la présence du point et rajouté la remarque qu'après avoir refait et copie /collé le code
perso je préfère tester en positif plutôt qu'en négatif
on a toujours de surprises -
que fait ce point à la fin de :$content_dir = 'C:\wamp\www\ONDA\communication-QT1\. ?
essayes comme celà:<?php $id_connex=mysql_connect("localhost","root","") or die("Connexion impossible"); mysql_query("use ONDA"); $content_dir = 'C:\wamp\www\ONDA\communication-QT1\.'; $tmp_file = $_FILES['fichier']['tmp_name']; $name_file = $_FILES['fichier']['name']; if( is_uploaded_file($tmp_file) ) { if( move_uploaded_file($tmp_file, $content_dir . $name_file) ){ echo "Le fichier <b>$name_file</b> a bien été uploadé" }else{ echo "Impossible de copier le fichier <b>$name_file</b> dans <b>$content_dir</b>"; } }else{ echo $_FILES['fichier']['error'];; } ?>-
C'est vrai que le point à la fin de $content_dir est sûrement une erreur, mais elle ne devrait provooquer un problème qu'à partir du move_uploaded_file, pas dès le if( !is_uploaded_file($tmp_file) ).
Je n'ai pas bien compris ce qui a changé entre le script de njimer et le tien, à part un peu de mise en forme, les mêmes fonctions sont appelées dans le même ordre. Tu as même laissé le point à la fin de $content_dir.
-
- 1
- 2