<?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 => 'zh',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => '上传多个文件',
    2 => '上传多个文件',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => '文件上传处理',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.common-pitfalls.php',
    1 => '常见缺陷',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.put-method.php',
    1 => '对 PUT 方法的支持',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    '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">上传多个文件</h2>
  <p class="simpara">
   可以对 <code class="literal">input</code> 域使用不同的 <code class="literal">name</code> 来上传多个文件。
  </p>
  <p class="simpara">
   PHP 支持同时上传多个文件并将它们的信息自动以数组的形式组织。要完成这项功能，需要在
   HTML 表单中对文件上传域使用和多选框与复选框相同的数组式提交语法。
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>示例 #1 上传多个文件</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;
  Send these files:&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;Send files&quot; /&gt;
&lt;/form&gt;</pre>
</div>
    </div>

   </div>
  </p>
  <p class="simpara">
   当以上表单被提交后，数组
   <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>
   和 <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size']</a></var> 将被初始化。
  </p>
  <p class="simpara">
   例如，假设名为 <var class="filename">/home/test/review.html</var> 和
   <var class="filename">/home/test/xwp.out</var> 的文件被提交，则
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][0]</a></var> 的值将是
   <var class="filename">review.html</var>，而
   <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['name'][1]</a></var> 的值将是
   <var class="filename">xwp.out</var>。类似的，<var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['size'][0]</a></var>
   将包含文件 <var class="filename">review.html</var> 的大小，依此类推。
  </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>
   以及 <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES['userfile']['type'][0]</a></var>。
  </p>
  <div class="warning"><strong class="warning">警告</strong>
   <p class="simpara">
    <a href="ini.core.php#ini.max-file-uploads" class="link">max_file_uploads</a>
    配置选项对单次请求中可上传的文件数量进行了限制。需要确保表单在单次请求中上传的文件数量不超过此限制。
   </p>
  </div>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>示例 #2 上传整个目录</strong></p>
    <div class="example-contents"><p>
     在 HTML 文件上传字段中，可以使用 <code class="literal">webkitdirectory</code>
     属性上传整个目录。大多数现代浏览器都支持此功能。
    </p></div>
    <div class="example-contents"><p>
     利用 <code class="literal">full_path</code> 信息，可以存储相对路径，或者在服务器上重建相同的目录结构。
    </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;
  Send this directory:&lt;br /&gt;
  &lt;input name=&quot;userfile[]&quot; type=&quot;file&quot; webkitdirectory multiple /&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Send files&quot; /&gt;
&lt;/form&gt;</pre>
</div>
    </div>

   </div>

   <div class="warning"><strong class="warning">警告</strong>
    <p class="simpara">
     <code class="literal">webkitdirectory</code>
     属性是非标准的，也不在标准化进程中。不要在面向公众的生产环境中使用它：它不会对所有用户都有效。各实现之间可能存在很大的不兼容性，将来行为可能会发生变化。
    </p>
    <p class="simpara">
     PHP 仅解析浏览器/用户代理提交的相对路径信息，并将该信息传递到 <var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var>
     数组中。不能保证 <code class="literal">full_path</code> 数组中的值包含真实的目录结构，PHP
     应用程序不得信任此信息。
    </p>
   </div>
  </p>
 </div><?php manual_footer($setup); ?>