[php] upload de fichier

Résolu/Fermé
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 - 31 juil. 2008 à 15:55
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 - 31 juil. 2008 à 18:47
Bonjour,
je n'arrive pas a recupérer un fichier en php.
je vous affiche un bout du code:

<form name="form1" method="post" action="">


<input type="hidden" name="nom"> <input type="File" name="fichier" />
<input type="submit" name="Submit" value="Inserer" /> </form>





<?php

if (isset($_POST['Nom']))

{



$file = $_FILES['fichier']['tmp_name'];

$file_tmp =$file['tmp_name'];

$nomfichier=$_FILES['fichier']['name'];




?>


lorsque j'execute, il me dit undefined vaiable 'fichier';
ce qui est normal mais je n'arrive pas a corriger.
puisque 'fichier' est posté, donc je ne sais pas comment le recuperer correctement
A voir également:

5 réponses

el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
31 juil. 2008 à 17:04
Bonjour brudao,

Si le code HTML et le code PHP sont dans le même fichier, je pense qu'il y a un problème.

Le code HTML devrait être quelque-chose du genre:
<form name="form1" method="post" action="traite_fichier.php" enctype="multipart/form-data"> 


<input type="hidden" name="nom"> <input type="File" name="fichier" /> 
<input type="submit" name="Submit" value="Inserer" /> </form>


Puis, mettre le code dans traite_fichier.php (par exemple):
<?php 

if (isset($_POST['Nom'])) 

{ 



$file = $_FILES['fichier']['tmp_name']; 

$file_tmp =$file['tmp_name']; 

$nomfichier=$_FILES['fichier']['name']; 




?>



Cordialement,
el_linwin
0
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 14
31 juil. 2008 à 18:23
Merci el_liwin,
c'est ça qui manquait au niveau du form, c'est obligatoire: enctype="multipart/form-data"
donc ça devrait etre:
form name="form1" method="post" action="traite_fichier.php" enctype="multipart/form-data">

mais j'ai un autre probleme encore, lorsque je faire le uploaded, il n'ya pas d'erreur mais je ne vois pas le fichier.

$nomfichier = $_FILES['fichier']['name'];

$dossier = 'Doc/';

$file_tmp =$_FILES['fichier']['tmp_name'];

if(move_uploaded_file($file_tmp, $dossier . $nomfichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}

else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
31 juil. 2008 à 17:26
Bonjour,

Je te conseilles de bien comprendre comment fonctionne un formulaire en premier, et ensuite tu pourra y mettre un upload de fichier.
Pour ce qui est de trouver des tutoriaux sur la façon de faire un formulaire en PHP, tu en trouvera plein sur google en tapant : formulaire php tutoriel

Bon courage.

EDIT: ne pas prendre en compte ce post puisque déjà répondu entre temps.
0
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 14
31 juil. 2008 à 18:25
Merci el_liwin,
c'est ça qui manquait au niveau du form, c'est obligatoire: enctype="multipart/form-data"
donc ça devrait etre:
form name="form1" method="post" action="traite_fichier.php" enctype="multipart/form-data">

mais j'ai un autre probleme encore, lorsque je faire le uploaded, il n'ya pas d'erreur mais je ne vois pas le fichier.

$nomfichier = $_FILES['fichier']['name'];

$dossier = 'Doc/';

$file_tmp =$_FILES['fichier']['tmp_name'];

if(move_uploaded_file($file_tmp, $dossier . $nomfichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}

else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
0
el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
31 juil. 2008 à 18:29
Bonjour brudao,

Attention: $nomfichier (qui a la valeur de $_FILES['fichier']['name']) contient le nom, mais aussi le chemin du fichier sur la machine d'origine (le client donc). C'est pour cela que le fichier est introuvable (double chemin = invalide).

Il faut élaguer la partie chemin de $nomfichier avant de l'utiliser dans: move_uploaded_file($file_tmp, $dossier . $nomfichier)


Cordialement,
el_linwin
0

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

Posez votre question
brudao Messages postés 524 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 16 octobre 2014 14
31 juil. 2008 à 18:47
Merci el_liwin!
ça marche,
0