使用输入类型文件(多个)获取所选文件并将其存储在数组中

时间:2013-07-01 08:30:02

标签: javascript dom input

在我的HTML中,我选择了多个文件。

<input type="file" id="img" multiple>

我想将每个元素存储在一个数组中,以便我可以打印文件源。

我已经在我的javascript中完成了这项工作,但它不起作用。

function loadfiles()
{
var x=document.getElementById("img");
for (var i=0;i<x.length;i++)
{
  document.write(x.elements[i].src);
}
}

5 个答案:

答案 0 :(得分:6)

属性files为您提供文件输入选择的所有文件的数组。因此,应将loadfiles函数修改为以下内容:

function loadfiles()
{
    var imageFiles = document.getElementById("img"),
    filesLength = imageFiles.files.length;
    for (var i = 0; i < filesLength; i++) {
      document.write(imageFiles.files[i].name);
    }
}

答案 1 :(得分:2)

DOM文档(Mozilla):

  

element = document.getElementById(id);

     

,其中

     
      
  • element是对Element对象的引用,如果具有指定ID的元素不在文档中,则为null。
  •   
  • id是一个区分大小写的字符串,表示要搜索的元素的唯一ID。
  •   

在您的代码document.getElementById(id)中返回单个元素而不是列表 要访问添加到输入的文件,请查看HTML5 Files API。

var f = (document.getElementById('img').files);
for (var i =0; i < f.length; i++){
   var new_div = document.createElement('div');
   new_div.innerHTML = f[i].name;
   document.body.appendChild(new_div);   
}

仅供参考:使用document.write()非常危险,应该避免。如需了解更多信息,请参阅此stackoverflow问答:Why is document.write considered a "bad practice"?

在上面的示例中,我将document.write替换为document.body.appendChild

小提琴(使用jQuery)http://jsfiddle.net/4Yq4F/

获取完整的文件路径

这是在您的响应中请求文件的完整文件路径。不幸的是,由于安全原因,目前可能。但是,Mozilla Firefox浏览器将为您提供具有mozFullPath属性的完整文件路径。如果您要使用它,请在上面的示例中将f[i].name替换为f[i].mozFullPath

答案 2 :(得分:1)

这对你有用......

function loadfiles()
{
    var x=document.getElementsByTagName("input");
    for (var i=0;i<x.length;i++)
    {
         if(x[i].type == "file"){
             document.write(x[i].value);
         }
     }
}

答案 3 :(得分:0)

此代码适用于您。

HTML

<input type="text" id="text"/>
<input type="button" value="add" id="adda"/>

的JavaScript

var arry=[];
$("#adda").click(function(){
   arry.push( $("#text").val());
    alert(arry);
});

答案 4 :(得分:0)

var fileArray = new Array();
 $('#inputPostFile').change(function() {
                var files = this.files;
                   $('.uploadedFileList').html('');
                $.each(files, function (index, value) {
                    fileArray.push(value);
                });
            });