2011-10-07 78 views
4

我正在尝试使用Jquery编写ajax上传程序。 在HTML我可以写像多个上传现场:从多个文件上传字段获取文件名

<input type='file' multiple='multiple' name='files[]'> 

但是,我怎么能从此字段获取值? 当我用:

$('input[type='file']').val(); 

$('input[type='file']').attr('value'); 

我只得到了我选择要上传的第一个文件的文件名。有没有一种方法可以得到一个包含所有文件的数组?

回答

7

HTML5 Files API表示input将具有files属性。你可以像这样访问:

var fileList = document.getElementById("yourInput").files; 

返回一个FileList,我相信这是包含由用户选择的所有文件的数组,对象,那么你就可以在它迭代正常:

for(var i = 0; i < fileList.length; i++) { 
    //Do something with individual files 
} 

但是它不适用于不支持HTML5的浏览器,而且我认为它在IE 9以前不支持。如果这些旧浏览器对您很重要,那么您最好的选择可能是使用基于Flash或Java的上传器。