## 上传多个文件

可以对 `input` 域使用不同的 `name` 来上传多个文件。

PHP 支持同时上传多个文件并将它们的信息自动以数组的形式组织。要完成这项功能，需要在 HTML 表单中对文件上传域使用和多选框与复选框相同的数组式提交语法。

示例 #1 上传多个文件

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

当以上表单被提交后，数组 $_FILES['userfile']，$_FILES['userfile']['name'] 和 $_FILES['userfile']['size'] 将被初始化。

例如，假设名为 /home/test/review.html 和 /home/test/xwp.out 的文件被提交，则 $_FILES['userfile']['name'][0] 的值将是 review.html，而 $_FILES['userfile']['name'][1] 的值将是 xwp.out。类似的，$_FILES['userfile']['size'][0] 将包含文件 review.html 的大小，依此类推。

此外也同时设置了 $_FILES['userfile']['name'][0]， $_FILES['userfile']['tmp_name'][0]， $_FILES['userfile']['size'][0] 以及 $_FILES['userfile']['type'][0]。

警告

max_file_uploads 配置选项对单次请求中可上传的文件数量进行了限制。需要确保表单在单次请求中上传的文件数量不超过此限制。

示例 #2 上传整个目录

在 HTML 文件上传字段中，可以使用 `webkitdirectory` 属性上传整个目录。大多数现代浏览器都支持此功能。

利用 `full_path` 信息，可以存储相对路径，或者在服务器上重建相同的目录结构。

    <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>

警告

`webkitdirectory` 属性是非标准的，也不在标准化进程中。不要在面向公众的生产环境中使用它：它不会对所有用户都有效。各实现之间可能存在很大的不兼容性，将来行为可能会发生变化。

PHP 仅解析浏览器/用户代理提交的相对路径信息，并将该信息传递到 $_FILES 数组中。不能保证 `full_path` 数组中的值包含真实的目录结构，PHP 应用程序不得信任此信息。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open