我正在尝试做这样的事情:
JavaScript的:
function readMultipleFiles(evt) {
//Retrieve all the files from the FileList object
var files = evt.target.files;
window.array = []
if (files) {
for (var i = 0, f; f = files[i]; i++) {
var r = new FileReader();
r.onload = (function (f) {
return function (e) {
var contents = e.target.result;
window.array.push(contents);
};
})(f);
r.readAsText(f);
}
alert(window.array);
} else {
alert("Failed to load files");
}
}
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
HTML:
<input type="file" id="fileinput" multiple />
这样我就可以在本地读取本地文件。 但是,我希望将文件内容存储在以下格式的数组中:
[file1Contents, file2Contents, file3Contents... etc]
我该怎么做?我尝试设置一个全局变量(例如window.fileContents)并在on.load内部进行更新,但这不起作用
由于
答案 0 :(得分:2)
我不确定你要做什么,但我会给它一个摆动。我看到你已经把文件作为文本阅读..你能不能把它推到阵列那里?我在下面修改了你的代码:
var masterFileArray = []; // where I will store the contents
function readMultipleFiles(evt) {
//Retrieve all the files from the FileList object
var files = evt.target.files;
window.array = []
if (files) {
for (var i = 0, f; f = files[i]; i++) {
var r = new FileReader();
r.onload = (function (f) {
return function (e) {
var contents = e.target.result;
window.array.push(contents);
masterFileArray.append({name:f.name, contents: contents}); // storing as object
};
})(f);
r.readAsText(f);
}
console.log(masterFileArray);
} else {
alert("Failed to load files");
}
}
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);