## Télécharger plusieurs fichiers simultanément

Le téléchargement de plusieurs fichiers est possible en utilisant des noms différents dans l'attribut `name` de la balise `input`.

Il est aussi possible de télécharger plusieurs fichiers simultanément et d'obtenir les informations sous forme de tableau. Pour cela, vous devez utiliser la syntaxe de tableau dans les noms de balises HTML, comme vous l'avez fait avec les sélections multiples et les boîtes à cocher.

Exemple #1 Télécharger plusieurs fichiers simultanément

    <form action="file-upload.php" method="post" enctype="multipart/form-data">
      Envoyez plusieurs fichiers : <br />
      <input name="userfile[]" type="file" /><br />
      <input name="userfile[]" type="file" /><br />
      <input type="submit" value="Envoyer les fichiers" />
    </form>

Lorsque le formulaire ci-dessus a été envoyé, les tableaux $_FILES['userfile'], $_FILES['userfile']['name'], et $_FILES['userfile']['size'] seront initialisés.

Par exemple, supposons que les fichiers /home/test/review.html et /home/test/xwp.out ont été téléchargés. Dans ce cas, $_FILES['userfile']['name'][0] contient review.html et $_FILES['userfile']['name'][1] contient xwp.out. Similairement, $_FILES['userfile']['size'][0] va contenir la taille du fichier review.html, etc.

$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0] et $_FILES['userfile']['type'][0] sont aussi créées.

Avertissement

Le paramètre max_file_uploads limite le nombre de fichiers qui peuvent être envoyés en une requête. Vous devrez vérifier que votre formulaire ne tente pas d'envoyer plus de fichiers dans la requête que ne le tolère cette limite.

Exemple #2 Téléverser un dossier entier

Dans les champs de téléversement de fichier HTML, il est possible de téléverser un dossier entier avec l'attribut `webkitdirectory`. Cette fonctionnalité est supportée dans la plupart des navigateurs modernes.

Avec l'information `full_path`, il est possible de stocker les chemins relatifs ou reconstruire la même hiérarchie de dossier sur le dossier.

    <form action="file-upload.php" method="post" enctype="multipart/form-data">
      Send this directory:<br />
      <input name="userfile[]" type="file" webkitdirectory multiple />
      <input type="submit" value="Send files" />
    </form>

Avertissement

L'attribut `webkitdirectory` n'est pas standard et n'est pas actuellement en cours de standardisation. Ceci n'est pas à utiliser sur des sites de production tournés vers le Web : ça ne fonctionnera pas pour tous les utilisateurs. Il peut y avoir de grandes incompatibilités parmi les implémentations et le comportement peut changer dans le futur.

PHP analyse uniquement les informations des chemins relatifs soumit par le navigateur/user-agent et transmet les informations dans le tableau $_FILES. Il n'y a aucune garanties que les valeurs dans le tableau `full_path` contienne une vraie structure de dossier et l'application PHP ne doit pas faire confiance à cette information.