Uploader un fichier en php

[Résolu/Fermé]
Signaler
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012
-
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012
-
Bonjour, a vous tous
Je 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

Bonjour

Tu as limité la taille du téléchargement à 100k, es-tu bien sûr de ne pas essayer de fichier plus gros ?
As-tu essayé d'afficher le code d'erreur $_FILES['fichier']['error'] ?
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

Bonsoir ,
toujours même problème j'ai changée mon code en cela :
<?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) )
{
echo ($_FILES['fichier']['error'] );
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>"
?>
et Pour l'html j'ai enlevée le value= mais sans résultat
il ne m'affiche pas le code d'erreur même si j'ai ajoutée l'echo !!

Ça affiche "Le fichier est introuvable" sans afficher de code d'erreur ? C'est peut-être simplement que $_FILES['fichier'] n'est pas défini.
Ajoute
var_dump($_FILES);  
au début de ton script
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
893
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'];;
}
?> 
Utilisateur anonyme
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.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
893
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
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

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
Utilisateur anonyme
Je ne sais pas où tu as retiré un point, mais sans doute pas là où Alain_42 te l'avait dit, car sa remarque était justifiée et retirer le point qu'il t'a indiqué ne peut pas avoir provoqué cette erreur. On pourra en reparler plus tard.
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

Et lorsque j'ai ajoutée la fonction :
var_dump($_FILES); ça m'affiche :
array(0) { }
dans la page upload1.php

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)
Utilisateur anonyme
Ton formulaire dit action="test2.php" et toi tu nous parles de upload1.php...
Ça n'est pas très cohérent. Tu as modifié ton formulaire ?
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

oui j'avais modifier le formulaire ou j'avais enlever le value (représentant la taille du fichier)

j'avais modifier le formulaire
Peux-tu montrer ton formuliare modifié ?
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

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>
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

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>
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
893
<input type="hidden" name="MAX_FILE_SIZE">

value= ???????
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

non j'ai enlevée le value pour ne pas avoir la contrainte de la taille
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

<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>

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 ?
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

<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) { }

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 ?
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

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 ??

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.
Messages postés
24
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
17 juin 2012

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 ??