L2 Info : PHP et Programmation Web
 
◃  Ch. 6 Gestion des formulaires  ▹
 

Upload de fichiers

  • Formulaire HTML :
    • Utilisation de la méthode POST obligatoire.
    • Attribut enctype="multipart/form-data" obligatoire.
    <form action="coursPHP52.php" method="post"
            enctype="multipart/form-data" target="ongletCible">
    <p>  <b>Fichier : </b>
      <input type="file" name="upload" size="10" /><br />
      <input type="submit" name="envoi"   
             value="Clic" /></p>
    </form>
    
  • Affichage dans le navigateur :

    Fichier :

  • Côté PHP :
    if (isset($_FILES['upload'])) {
        foreach ($_FILES['upload'] as $k => $v) {
            echo "<b>$k : </b>" . $v;
            echo "<br />";
        }
        $nomFichier = $_FILES['upload']['tmp_name'];
        $data = file($nomFichier);
        print_r($data);
    
    } else {
        echo 'Pas de fichier téléchargé';
    }
    
  • Résultats dans le tableau associatif $_FILES
    • $_FILES['upload']['name'] : nom du fichier
    • $_FILES['upload']['type'] : type du fichier (non fiable)
    • $_FILES['upload']['size'] : taille du fichier en octets
    • $_FILES['upload']['tmp_name'] : chemin d'accès au fichier téléchargé (le nom est différent)
    • $_FILES['upload']['error'] : code d'erreur associé au téléchargement
    • $_FILES['upload']['full_path'] pas fiable (depuis PHP 8.1.0)
  • Voir les fonctions is_uploaded_file() et move_uploaded_file()
  • Dans le fichier php.ini on peut configurer la taille maximale des données transmises par POST, autoriser ou non les uploads de fichier, etc.
  • L'upload de fichier est à réaliser avec précaution, car la sécurité du serveur peut être rapidement mise en cause.