JQuery - 获取input ='file'中的所有文件名

Nol*_*esh 33 javascript jquery

我有<input type="file" id="basicUploadFile" multiple="multiple">,我想在这个输入中获取所有文件名.我见过一些例子,但它只获得了第一个文件的名称.

$ ('#basicUploadFile').live ('change', function () {
    alert($ ('#basicUploadFile').val());
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢.

wro*_*ock 80

var files = $('#basicUploadFile').prop("files")
Run Code Online (Sandbox Code Playgroud)

files 将是一个FileList对象.

var names = $.map(files, function(val) { return val.name; });
Run Code Online (Sandbox Code Playgroud)

现在names是一个字符串数组(文件名)

FileAPI引用
文件属性引用

  • 很好地展示了我不知道的`.prop()`和`$ .map()`方法.:) (3认同)
  • 使用`if(window.File && window.FileList)`来检查浏览器支持 (3认同)
  • 是的,对多重属性的支持仅出现在IE10中. (2认同)

Ric*_*ard 12

jsFiddle演示


您仍然可以将文件作为FileList集合访问,而无需过度使用jQuery.我已经创建了一个快速的jsFiddle,演示了如何使用FileListFile对象从输入中获取信息.这是一个片段:

$('#basicUploadFile').live('change', function ()
{
    for (var i = 0; i < this.files.length; i++)
    {
        alert(this.files[i].name);
        alert(this.files.item(i).name); // alternatively
    }
});
Run Code Online (Sandbox Code Playgroud)

  • `$(this)` 会简单地为我们提供对象 `this` 的 jQuery 包装器,这在某些情况下会很有帮助,因为它会暴露某些方法,但在这种情况下它是不必要的。 (2认同)