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 に答える