私はFileReader APIを使用して複数のファイルを読み取ります。一度に1つずつJavascript FileReader APIを使用して複数のファイルを読む
<html> <body>
<input type="file" id="filesx" name="filesx[]"
onchange="readmultifiles(this.files)" multiple=""/>
<div id="bag"><ul/></div>
<script>
window.onload = function() {
if (typeof window.FileReader !== 'function') {
alert("The file API isn't supported on this browser yet.");
}
}
function readmultifiles(files) {
var ul = document.querySelector("#bag>ul");
while (ul.hasChildNodes()) {
ul.removeChild(ul.firstChild);
}
function setup_reader(file) {
var name = file.name;
var reader = new FileReader();
reader.onload = function(e) {
var bin = e.target.result; //get file content
// do sth with text
var li = document.createElement("li");
li.innerHTML = name;
ul.appendChild(li);
}
reader.readAsBinaryString(file);
}
for (var i = 0; i < files.length; i++) { setup_reader(files[i]); }
}
</script> </body> </html>
問題は、すべてのファイルが同時に読み込まれることで、ファイルが非常に大きい合計サイズ(合計)を持っている場合、ブラウザがクラッシュします。
ファイルを1つずつ読み込み、メモリ消費量を減らしたいです。
これは可能ですか?
なぜあなたは新しい[FileReaderの](httpsを作成しないでください://開発者を.mozilla.org/ja/docs/Web/API/FileReader)の各オブジェクトを読み取りますか? FileReaderオブジェクトは、状態が '0'(空)から' 1'(ロード)に変更された後、 '2'(完了)に変更された後に再利用されるものではないと思います。これにより、深刻なブラウザのバグが発生する可能性があります。 – Pacerier