【问题标题】:Get input type="file" value when it has multiple files selected [duplicate]选择多个文件时获取输入类型=“文件”值[重复]
【发布时间】:2011-08-11 09:14:05
【问题描述】:

可能重复:
Retrieving file names out of a multi-file upload control with javascript

从 HTML5 输入 type="file" 允许用户通过添加 multiple="multiple" 来选择多个文件:

<input type="file" multiple="multiple" />

我的问题是:如何获得该输入的值?使用.Value时,它仅返回选定的第一个文件的文件名,但是选择多个文件时,我无法查看其他文件。

我有什么:

<input type="file" multiple="multiple" onchange="alert(this.value)"
     onmouseout="alert(this.value) />

正如我告诉你的那样,它只显示所选文件之一的名称。

注意:我不想只编辑文件名的值(我知道这是不可能的)

谢谢!

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    选择的文件存储在一个数组中:[input].files

    例如,您可以访问项目

    // assuming there is a file input with the ID `my-input`...
    var files = document.getElementById("my-input").files;
    
    for (var i = 0; i < files.length; i++)
    {
     alert(files[i].name);
    }
    

    对于使用 jQuery 的人来说,同样简单

    // assuming there is a file input with the ID `my-input`...
    var files = $("#my-input")[0].files;
    
    for (var i = 0; i < files.length; i++)
    {
     alert(files[i].name);
    }
    

    【讨论】:

    • 文件输入的文件属性在ie上是未定义的,但在其他浏览器上工作得很好。你知道有什么办法可以解决这个问题吗?
    • files[i] 在 IE9 中未定义。你能给出如何在 IE9 中完成这项工作的解决方案吗?
    • @OO7 IE9 不支持多输入文件。它仅适用于 IE10+。
    • name 没有路径,完整路径的属性是什么?
    【解决方案2】:

    use input.files property。它是File objects 的集合,每个文件都有一个name 属性:

    onmouseout="for (var i = 0; i < this.files.length; i++) alert(this.files[i].name);"
    

    【讨论】:

    • 谢谢,它与freedompeace 的答案完全一样(name 或fileName 都有效),但他先回答,我不能将两个答案设置为已接受,无论如何+1 给你的答案
    • 实际上,他首先在没有适当代码示例的情况下回答,并在我发送我的帖子后编辑了他的帖子。但是——真的没关系。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2014-03-21
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多