Upload via formulaire

Fermé
nw.nain Messages postés 43 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 21 juin 2009 - 4 juin 2009 à 09:59
Jodu Messages postés 89 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 - 5 juin 2009 à 11:18
Bonjour,
comme le dit le titre je cherche à faire un formulaire permettant d'envoyer un fichier dans un dossier sur le serveur. Mon architecture est la suivante : il y a un dossier /userfiles à la racine et dedans chaque client a un dossier qui lui est propre qui a pour nom id-nom


le code que j'ai écrit est le suivant :
<form method="post" action="reception.php?id=<?php echo $id ?>" enctype="multipart/form-data">
     
     <label for="mon_fichier">sélectionner le fichier à envoyer:</label><br />
     <input type="file" name="mon_fichier" id="mon_fichier" /><br />
     
     <input type="submit" name="submit" value="Envoyer" />
</form>


la redirection se fait bien j'ai donc l id et ttes les infos de mon client
$connect = mysql_connect(MYHOST, MYUSER, MYPASS)  or die ('Identifiants incorrects');
	mysql_select_db(MYDB) or die ('Base de données incorrecte');
	$result = mysql_query("SELECT nom FROM clients where id='$id'");
	if (!$result) {
	die('Impossible d\'exécuter la requête :' . mysql_error());
}
$requete=mysql_result($result, 0);	
$namefi="$id-$requete";
mysql_close($connexion) ;
$destination ="/userfiles/$namefi";


j'ai construit l'adresse de destination du fichier j'essaie donc de le déplacer :

 if ($_FILES['mon_fichier']['error'] > 0) $erreur = "Erreur lors du tranfsert";
$resultat = move_uploaded_file($_FILES['mon_fichier']['tmp_name'],$destination);
if ($resultat) echo "Transfert réussi"; 


et la rien ne se passe .... le fichier n'est pas mit dans le bon dossier cependant aucune erreur est afficher ! je ne sais pas comment il faut faire, y a t'il une autre méthode ? faut il rajouter qq chose ?

merci d'avance!
Cordialement

5 réponses

Jodu Messages postés 89 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
4 juin 2009 à 10:05
Salut,

j'avais eu le même soucis que toi il y a longtemps, aucune erreur d'affichée et rien ne déplaçait...
Pour construire mon script d'upload je m'étais inspiré de 3 sites : commentcamarche, siteduzero, et manuelphp (je crois) et à force de tests, d'echos en tous sens, j'étais arrivé à le rendre fonctionnel.
Il faut que tu essaies de faire des echos pour savoir si tu passes dans tes conditions ou non, afin de repérer là où se fait ton erreur.

Lu comme ça, ton code me semble sans erreurs...

Si ça t'intéresse, je peux te copier mon code.

Bon courage
0
nw.nain Messages postés 43 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 21 juin 2009
4 juin 2009 à 10:56
alors j'ai fait des echo partout il va jusqu'au bout du script sans soucis !
il y a juste
 echo "$_FILES['mon_fichier']['tmp_name']";


qui fait quelque chose de moche mais sinon aucun soucis !

pour ce qui et de ton code ouai je suis preneur!!! ça aidera surement a trouver la ptite boulette :D je me suis aussi aider des sites : site du zero et ccm c pour ça que je suis étonné que cela ne marche pas
0
Jodu Messages postés 89 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
4 juin 2009 à 11:06
Re,

voilà le bout de code :
	    if (isset($_FILES['image']) and $_FILES['image']['error']==0)
		{
		  $nomimage=$image.".png";
		  $extension=strrchr($_FILES['image']['name'],'.');
		  $bonneext=array(".png");
		  
		if (in_array($extension,$bonneext))
		  {
		    move_uploaded_file($_FILES['image']['tmp_name'],'./images/pizzas/'.$nomimage);
			echo "Envoi OK";
		  }
		  else
		  {
		  echo "Erreur" ;
		  }
		}


Ici, je ne prend que les png, bien sur tu peux changer les extensions dans ton array ;)
0
nw.nain Messages postés 43 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 21 juin 2009
4 juin 2009 à 11:35
bon alors j'ai plusieurs question sur ce script:

1 : dans le form le name de champ = mon_fichier, quand le fichier sera up il gardera son nom d'origine cad
si j'up un fichier appelé wallpaper.png, une foi sur le serv il gardera son nom ou s'appelera mon_fichier.png ?

2 : j'ai trouver une autre fonction :
<?php
function upload($index,$destination,$maxsize=FALSE,$extensions=FALSE)
{
   //Test1: fichier correctement uploadé
     if (!isset($_FILES[$index]) OR $_FILES[$index]['error'] > 0) return FALSE;
   //Test2: taille limite
     if ($maxsize !== FALSE AND $_FILES[$index]['size'] > $maxsize) return FALSE;
   //Test3: extension
     $ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
     if ($extensions !== FALSE AND !in_array($ext,$extensions)) return FALSE;
   //Déplacement
     return move_uploaded_file($_FILES[$index]['tmp_name'],$destination);
}
 
//EXEMPLES
  $upload1 = upload('icone','uploads/monicone1',15360, array('png','gif','jpg','jpeg') );
  $upload2 = upload('mon_fichier','uploads/file112',1048576, FALSE );
 
  if ($upload1) "Upload de l'icone réussi!<br />";
  if ($upload2) "Upload du fichier réussi!<br />";
?>


elle vient du site du zero or je ne comprend pas comment l'utiliser, on part du form , on clic sur le bouton de type submit mais ou appel t'on cette fonction ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jodu Messages postés 89 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
5 juin 2009 à 11:18
Salut,

Test1 : teste si aucune erreur dans l'upload (cf commentcamarche.net pour les erreurs de l'upload,1,2,3,4)
Test2 : Si le fichier est trop gros (plus gros que la taille max que tu lui autorises), on met erreur.
Test3 : test des extensions, si l'extention uploadée ne correspond pas a l'extention présente dans ton tableau (array) d'extensions autorisées, alors on renvoie une erreur.

Si pas d'erreurs, on bouge le fichier des fichiers temporaires sur le repertoire désiré du serveur.

Dans l'exemple, pour $upload1, on transmet des paramètres a la fonction "upload", avec le tableau des extensions autorisées (png, gif...), la taille du fichier (15360), le repertoire de destination (upload/monicone1) et le nom(icone).
Pour $upload2, pareil avec un autre exemple de fichier.

A toi de te servir de la fonction correctement.

Si tu ne maîtrise pas les fonctions, je te conseille de lire des cours. Moi je t'explique ce qu'elle fait.
Pour appeler la fonction on a utilisé le nom de la fonction "upload".
Probablement cette fonction sera enregistrée sur un autre fichier, il faudra donc appeler ce fichier avec un "require" , sinon ta fonction ne sera pas trouvée (logique).

Je te renvoie au siteduzero pour des cours simples
0