JQuery – 获取input =’file’中的所有文件名

我有我希望获得此输入中的所有文件名。 我见过一些例子,但它只获得了第一个文件的名称。

 $ ('#basicUploadFile').live ('change', function () { alert($ ('#basicUploadFile').val()); }); 

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

 var files = $('#basicUploadFile').prop("files") 

files将是一个FileList对象。

 var names = $.map(files, function(val) { return val.name; }); 

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

FileAPI参考
files属性引用

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 } }); 

我用它在控制台中显示所有文件名:

 var input_file = $("#input_file"); input_file.on("change", function () { var files = input_file.prop("files") var names = $.map(files, function (val) { return val.name; }); $.each(names, function (i, name) { console.log(name); }); }); 
   function uploadAttachment() { debugger; var files = $('#selectAttachment').prop('files'); var names = $.map(files, function (val) { return val.name; }); } 

live在很多版本之前已被弃用,并在v1.9中被删除。 您可以使用.on()执行。

请参阅下面的实例:

 $('#basicUploadFile').on('change', function() { for (var i = 0; i < this.files.length; i++) { console.log(this.files[i].name); } });