[php] upload de fichier

Résolu
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
Configuration: Linux
Firefox 2.0.0.13

5 réponses

  1. 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
    1. 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 !';
      }
  2. Contributeur
    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.
    1. 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 !';
      }
      1. 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