在数组中存储本地文件的内容

时间:2012-12-01 23:37:12

标签: javascript html5 filereader

我正在尝试做这样的事情:

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内部进行更新,但这不起作用

由于

1 个答案:

答案 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);