<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => 'Enviando m&uacute;ltiplos arquivos',
    2 => 'Enviando m&uacute;ltiplos arquivos',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => 'Gerenciamento de envio de arquivos',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.common-pitfalls.php',
    1 => 'Problemas Comuns',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.put-method.php',
    1 => 'Suporte ao m&eacute;todo PUT',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Enviando múltiplos arquivos</h2>
   <p class="simpara">
    Múltiplos arquivos podem ser enviados usando diferentes
    nomes (<code class="literal">name</code>) para entradas (<code class="literal">input</code>).
   </p>
   <p class="simpara">
    Também é possível carregar vários arquivos simultaneamente e
    ter a informação automaticamente organizada em arrays. Para
    isso, é necessário usar a mesma sintaxe das arrays submetidas pelo
    formulário HTML que você usa para múltiplos selects e checkboxes:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Exemplo #1 Carregando múltiplos arquivos</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;
  Envie esses arquivos:&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;Enviar arquivos&quot; /&gt;
&lt;/form&gt;</pre>
</div>
     </div>

    </div>
   </p>
   <p class="simpara">
    Quando o formulário acima é submetido, os arrays
    <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>, e
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size']</a></var> serão
    inicializados.
   </p>
   <p class="simpara">
    Por exemplo, suponha os nomes dos arquivos
    <var class="filename">/home/test/review.html</var> e
    <var class="filename">/home/test/xwp.out</var>. Neste caso,
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][0]</a></var>
    deve conter o valor <var class="filename">review.html</var>, e
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][1]</a></var>
    deve conter o valor <var class="filename">xwp.out</var>. Similarmente,
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size'][0]</a></var> deve
    conter o tamanho do arquivo <var class="filename">review.html</var>, e assim por diante.
   </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>, e
    <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['type'][0]</a></var>
    também são definidas.
   </p>
   <div class="warning"><strong class="warning">Aviso</strong>
    <p class="simpara">
     O parâmetro
     <a href="ini.core.php#ini.max-file-uploads" class="link">max_file_uploads</a>
     atua como um limite no número de arquivos que podem ser
     enviados em uma única requisição. Você precisa ter certeza que
     seu formulário não tentará enviar mais arquivos que o limite definido.
    </p>
   </div>
   <p class="para">
    <div class="example" id="example-2">
     <p><strong>Exemplo #2 Carregando um diretório inteiro</strong></p>
     <div class="example-contents"><p>
      Nos campos de carregamento de arquivos HTML, é possível carregar um diretório inteiro com o atributo <code class="literal">webkitdirectory</code>.
      Esse recurso é suportado na maioria dos navegadores modernos.
     </p></div>
     <div class="example-contents"><p>
      Com a informação <code class="literal">full_path</code>, é possível armazenar os caminhos relativos,
      ou reconstruir o mesmo diretório no servidor.
     </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;
  Enviar este diretório:&lt;br /&gt;
  &lt;input name=&quot;userfile[]&quot; type=&quot;file&quot; webkitdirectory multiple /&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Enviar arquivos&quot; /&gt;
&lt;/form&gt;</pre>
</div>
     </div>

    </div>

    <div class="warning"><strong class="warning">Aviso</strong>
     <p class="simpara">
      O atributo <code class="literal">webkitdirectory</code> não é padronizado e não está no roteiro de padronização.
      Não utilize-o em sites em produção voltados para a Web: ele não funcionará para todos os usuários.
      Também podem haver grandes incompatibilidades entre implementações e o comportamento pode mudar no futuro.
     </p>
     <p class="simpara">
      O PHP analisa apenas a informação de caminho relativo enviada pelo navegador/user-agent,
      e passa essa informação para o array <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>.
      Não há garantia de que os valores no array <code class="literal">full_path</code> contenham uma estrutura de diretórios real,
      e a aplicação PHP não deve confiar nesta informação.
     </p>
    </div>
   </p>
  </div><?php manual_footer($setup); ?>