【发布时间】:2016-03-10 14:39:42
【问题描述】:
我正在尝试读取所选文件的第一个字节。
但是当我选择一个大文件 (>100Mb) 时,我得到一个错误:“NotReadableError”。
请参阅下面的代码。 “数组缓冲区”真的是缓冲区还是只是将整个内容加载到内存中,我必须使用file#slice?
function readFile(file) {
var reader = new FileReader();
reader.onload = function() {
var buffer = reader.result;
var view = new Int8Array(buffer);
try {
view.forEach(function(v, index, array) {
console.log(v);
alert("ok - " + v);
throw "BreakException";
})
} catch (e) {
if (e!=="BreakException") throw e;
}
}
reader.onerror = function() {
alert("error");
console.log(reader.error);
}
reader.readAsArrayBuffer(file);
}
var fileField = document.getElementById("file");
fileField.onchange = function(e) {
var file = e.target.files[0];
readFile(file);
}
<form>
<input id="file" type="file"/>
</form>
【问题讨论】:
-
缓冲区!= 流。如果文件为 100MB,则缓冲区可能为 100MB,内存使用量为 200MB。
标签: javascript asp.net-web-api filereader