0

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

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

谢谢

4

1 回答 1

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);
于 2012-12-02T00:11:35.363 回答