【问题标题】:HTML Input Multiple TagHTML 输入多标签
【发布时间】:2014-02-05 21:45:16
【问题描述】:

我正在构建一个简单的 HTML 表单。我希望能够添加多个文件以与要上传的表单一起提交。我在网上阅读的有关 HTML5 的所有内容都表明我可以使用 HTML5 Input Multiple 标记来做到这一点。当我在任何浏览器中尝试此操作时,我都会得到带有文件类型的标准输入。当我检查 DOM 时,我发现它的 Files[0] 属性中只有一个文件。这是我的表格。请让我知道我做错了什么。

这是我上传文件表单的 HTML:

<form method="post" action=upload.php" enctype="multipart/form-data">
       <input type="file" id="basicUploadFile" multiple >
</form>

还有。我已经在 Chrome、Firefox、IE 11 中尝试过这个。即使去 W3school.com 演示似乎也不适用于多个文件。

【问题讨论】:

    标签: html forms multifile-uploader


    【解决方案1】:

    files[0] 将显示您选择的第一个文件。 files 为您提供所选文件的集合,files.length 为您提供所选文件的数量。因此,如果您console.log(fileinput.files) 选择了多个文件,您将看到记录了多个文件。

    【讨论】:

    • 谢谢。我对 DOM 中 Files 对象的结构有点困惑。这帮助了很多!
    • 当我尝试使用 jquery 选择器选择元素时,它似乎找不到 .files 示例; $("#basicUploadFile).files 返回未定义。
    • @user2997301 $("#basicUploadFile") 是一个 jQuery 对象,文件属性位于 dom 元素上。要从 jQuery 对象中公开 dom 元素,您可以执行 $("#basicUploadFile").get(0)$("#basicUploadFile")[0]。所以获取文件请执行$("#basicUploadFile")[0].files$("#basicUploadFile").get(0).files 甚至$("#basicUploadFile").prop('files')
    • 仍然只显示该数组中的单个项目。当我检查 PHP 端的 $_FILES 时,我得到以下数组; 'basicUploadFile' => 数组 (size=5) 'name' => 数组 (size=1) 0 => 字符串 'splash-620x300.png' (length=18) 'type' => 数组 (size=1) 0 => 字符串 'image/png' (length=9) 'tmp_name' => 数组 (size=1) 0 => 字符串 'C:\wamp\tmp\php77CD.tmp' (length=23) 'error' =>数组 (size=1) 0 => int 0 'size' => 数组 (size=1) 0 => int 12428
    • 这是一个 php 问题,如果您希望字段在 php 中被视为数组,则字段名称必须以 [] 结尾。
    【解决方案2】:

    在upload.php中分析数组$_FILES的结构;)

    好喜欢!

    【讨论】:

      【解决方案3】:

      这是一个错字吗? upload.php 前有一个 " 丢失

      您的表单标签看起来正确

      http://en.wikipedia.org/wiki/File_select#Multiple_file_selection

      [编辑] 如果您指的是 W3schools 网站,这适用于我在 Chrome 和 IE 上 http://www.w3schools.com/tags/att_input_multiple.asp

      TryIt 网站:

      http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_multiple

      【讨论】:

      • 是的,在我发布问题后抓住了类型。感谢您的帮助。