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

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