2013-10-30 97 views
-1

我试图这样做只是由输入的文件分配到一个变量:如何将文件输入的数据保存到一个变量在javascript

var files = document.getElementById("upload").files; 

但萨姆斯在一个连接与此分配创建所以每次输入都会改变自己的变量。 因此,如果没有这种联系,我该怎么做?

+0

尝试的AJAX技术,使用XMLHttpRequest的 – jamesTheProgrammer

+0

为什么了XMLHttpRequest它不是一个服务器端 –

+0

http://stackoverflow.com/questions/12530158/pass-file-from-javascript-上传到PHP – jamesTheProgrammer

回答

2

你只是想要文件名?然后只是获取文件名:

var files = [], 
    upload = document.getElementById("upload"); 

upload.onchange = function() { 
    for (var i=0;i<upload.files.length;i++) { 
     files.push(upload.files[i].fileName); 
    } 
} 

???从FileList没有“继承”行为,但我认为我误解了。

+0

不,我想要整个文件,反正这个方法工作正常,连接也没有问题,谢谢 –

1

这是因为它被用作对文件属性的引用。如果您不知道这意味着什么,请在Google上阅读“传递值与传递参考”。

你需要做复制的价值是什么不幸的是,这样的事情:

var files = (function() { return document.getElementById("upload").files; })(); 

为了价值,没有参考.files属性复制。

这里发生的简单回答是var files引用该DOM元素的files属性的内存地址。它看起来像你正在复制的价值,实际上它指向的是内存插槽,访问它只是追踪任何存储在那里并访问它的路径。

+0

连接仍然! –

1

我修改@ Mike的答案,并得出结果,它实际上工作。我正在写一个可以转换为支持多个文件的单个文件的答案。

var file = document.getElementById("upload").files[0]

这将存储文件,而不是refrence到文件,因此如果upload文件类型的值更改文件的值保持不变。

希望这可以帮助别人

相关问题