Rechercher : dans
Par :

Upload via formulaire

Dernière réponse le 5 jun 2009 à 11:18:06 nw.nain, le 4 jun 2009 à 09:59:39 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.0.8

Meilleures réponses pour « upload via formulaire » dans :
[PHP] Upload de fichiers Voir Le langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
Javascript - Effacer un champ de formulaire lors du clic (focus) VoirIl vous est sûrement arrivé de tomber sur un formulaire HTML avec des valeurs pré-remplies décrivant par exemple le type de valeur attendue. L'intention est louable mais il est désagréable de devoir sélectionner ce texte et le supprimer avant de...
[Webmaster] Faire facilement un espace d'upload VoirPourquoi ? Il arrive que vous ayez besoin de mettre en place un petit espace de téléchargement (upload/download) pour stocker des fichiers sur votre site web. C'est en effet très pratique et peut dépanner quand vous n'avez pas de clé USB sous la...
Télécharger Pilotes VIA AC'97 VoirLe pilote VIA AC'97 sound driver convient pour toutes les cartes-mères embarquant un chipset VIA. La liste complète des chipsets supportés est la suivante : VIA AC97 codec incorporated into VT82C686A/B South Bridges ( VT82C686A VT82C686B ) VIA...
Télécharger Pilote VIA Rhine Fast Ethernet Adapter VoirLe pilote VIA Rhine Fast Ethernet Adapter supporte les produits suivants : South Bridge integrated VT8251 South Bridge integrated VT8231, VT8233, VT8235 & VT8237 (Rhine & Rhine II) ( VT8237 VT8235 VT8231 VT8233/A/C VT6107 ) VT6105/L/LOM and...
Télécharger VIA Hyperion VoirLes drivers VIA Hyperion Pro conviennent pour n'importe quel chipset VIA, mais ils sont particulièrement recommandés pour les chipsets KT4## series, P4X4## series et plus récents, par exemple : K7 chipsets: KT400, KT400A, KT600, KT880, KM400,...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
Servlets - Gestion des formulaires VoirIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...
Bases de données - Utilisation de formulaires VoirUtilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire...

1

Jodu, le 4 jun 2009 à 10:05:48

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

Répondre à Jodu

2

nw.nain, le 4 jun 2009 à 10:56:27

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

Répondre à nw.nain

3

Jodu, le 4 jun 2009 à 11:06:48

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

Répondre à Jodu

4

nw.nain, le 4 jun 2009 à 11:35:52

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 ?

Répondre à nw.nain

5

 Jodu, le 5 jun 2009 à 11:18:06

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

Répondre à Jodu
Collection CommentÇaMarche.net