<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.file-upload.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => 'T&eacute;l&eacute;charger plusieurs fichiers simultan&eacute;ment',
    2 => 'T&eacute;l&eacute;charger plusieurs fichiers simultan&eacute;ment',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => 'Gestion des chargements de fichiers',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.common-pitfalls.php',
    1 => 'Erreurs classiques',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.put-method.php',
    1 => 'Chargement par m&eacute;thode PUT',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'features/file-upload.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.file-upload.multiple" class="sect1">
  <h2 class="title">Télécharger plusieurs fichiers simultanément</h2>
  <p class="simpara">
   Le téléchargement de plusieurs fichiers est possible
   en utilisant des noms différents dans l&#039;attribut
   <code class="literal">name</code> de la balise <code class="literal">input</code>.
  </p>
  <p class="simpara">
   Il est aussi possible de télécharger plusieurs fichiers simultanément
   et d&#039;obtenir les informations sous forme de tableau. Pour cela, il faut
   utiliser la syntaxe de tableau dans les noms de balises
   HTML, comme pour les sélections multiples
   et les boîtes à cocher.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Télécharger plusieurs fichiers simultanément</strong></p>
    <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;form action=&quot;file-upload.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt;
  Envoyez plusieurs fichiers : &lt;br /&gt;
  &lt;input name=&quot;userfile[]&quot; type=&quot;file&quot; /&gt;&lt;br /&gt;
  &lt;input name=&quot;userfile[]&quot; type=&quot;file&quot; /&gt;&lt;br /&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Envoyer les fichiers&quot; /&gt;
&lt;/form&gt;</pre>
</div>
    </div>

   </div>
  </p>
  <p class="simpara">
   Lorsque le formulaire ci-dessus a été envoyé, les
   tableaux <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']</a></var>,
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name']</a></var>, et
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size']</a></var> seront initialisés.
  </p>
  <p class="simpara">
   Par exemple, supposons que les fichiers
   <var class="filename">/home/test/review.html</var> et
   <var class="filename">/home/test/xwp.out</var> ont été téléchargés. Dans ce cas,
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][0]</a></var>
   contient <var class="filename">review.html</var> et
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][1]</a></var> contient
   <var class="filename">xwp.out</var>. De même,
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size'][0]</a></var> va contenir
   la taille du fichier <var class="filename">review.html</var>, etc.
  </p>
  <p class="simpara">
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][0]</a></var>,
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['tmp_name'][0]</a></var>,
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size'][0]</a></var> et
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['type'][0]</a></var> sont aussi
   créées.
  </p>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Le paramètre
    <a href="ini.core.php#ini.max-file-uploads" class="link">max_file_uploads</a> limite le nombre
    de fichiers qui peuvent être envoyés en une requête. Il faut vérifier que
    le formulaire ne tente pas d&#039;envoyer plus de fichiers dans la requête que ne
    le tolère cette limite.
   </p>
  </div>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Téléverser un dossier entier</strong></p>
    <div class="example-contents"><p>
     Dans les champs de téléversement de fichier HTML, il est possible de
     téléverser un dossier entier avec l&#039;attribut <code class="literal">webkitdirectory</code>.
     Cette fonctionnalité est supportée dans la plupart des navigateurs modernes.
    </p></div>
    <div class="example-contents"><p>
     Avec l&#039;information <code class="literal">full_path</code>, il est possible de
     stocker les chemins relatifs ou reconstruire la même hiérarchie de dossier sur le dossier.
    </p></div>
    <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;form action=&quot;file-upload.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt;
  Envoyez ce dossier :&lt;br /&gt;
  &lt;input name=&quot;userfile[]&quot; type=&quot;file&quot; webkitdirectory multiple /&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Envoyer les fichiers&quot; /&gt;
&lt;/form&gt;</pre>
</div>
    </div>

   </div>
   <div class="warning"><strong class="warning">Avertissement</strong>
    <p class="simpara">
     L&#039;attribut <code class="literal">webkitdirectory</code> n&#039;est pas standard et n&#039;est
     pas actuellement en cours de standardisation.
     Ceci n&#039;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.
    </p>
    <p class="simpara">
     PHP analyse uniquement les informations des chemins relatifs soumis par
     le navigateur/user-agent et transmet les informations dans le tableau
     <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>.
     Il n&#039;y a aucune garantie que les valeurs dans le tableau
     <code class="literal">full_path</code> contiennent une vraie structure de dossier
     et l&#039;application PHP ne doit pas faire confiance à cette information.
    </p>
   </div>
  </p>
 </div><?php manual_footer($setup); ?>