Javascript 使用FileReader(web api)在浏览器中读取大型文件

Javascript 使用FileReader(web api)在浏览器中读取大型文件,javascript,asp.net-web-api,filereader,Javascript,Asp.net Web Api,Filereader,我正在尝试读取所选文件的第一个字节 但是当我选择一个大文件(>100Mb)时,我得到一个错误:“NotReadableError” 请参阅下面的代码。“数组缓冲区”真的是一个缓冲区,还是它只是将所有内容加载到内存中,我必须使用它 函数readFile(文件){ var reader=new FileReader(); reader.onload=函数(){ var buffer=reader.result; var视图=新的Int8Array(缓冲区); 试一试{ view.forEach(函

我正在尝试读取所选文件的第一个字节

但是当我选择一个大文件(>100Mb)时,我得到一个错误:“NotReadableError”

请参阅下面的代码。“数组缓冲区”真的是一个缓冲区,还是它只是将所有内容加载到内存中,我必须使用它

函数readFile(文件){
var reader=new FileReader();
reader.onload=函数(){
var buffer=reader.result;
var视图=新的Int8Array(缓冲区);
试一试{
view.forEach(函数(v、索引、数组){
控制台日志(v);
警报(“正常-”+v);
抛出“BreakException”;
})
}捕获(e){
如果(e!==“BreakException”)抛出e;
}
}
reader.onerror=函数(){
警报(“错误”);
console.log(reader.error);
}
reader.readAsArrayBuffer(文件);
}
var fileField=document.getElementById(“文件”);
fileField.onchange=函数(e){
var file=e.target.files[0];
读取文件(文件);
}


阵列缓冲区实际上是一个缓冲区,一个内存缓冲区。缓冲区就是这样工作的。您的代码尝试将整个文件加载到内存中。要在不将整个文件加载到内存的情况下访问文件的特定范围,必须使用您怀疑的(文件实现所有BLOB方法)。

Buffer!=流动如果文件是100MB,缓冲区可能是100MB,内存使用量是200MB。这是我怀疑的((好的,我会使用slice。谢谢