javascript - 关于 FileReader.readAsArrayBuffer() 的问题
问题描述
如果我有一个大文件(例如数百 MB),FileReader.readAsArrayBuffer() 是否会将整个文件数据读取到 ArrayBuffer 中?
根据[这里[(https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsArrayBuffer)这就是发生的事情。
我有一个包含多个 GB 的大 .zip 文件。
我担心在移动设备上工作时会占用整个 RAM。
是否有另一种方法可以返回文件句柄并根据需要读取文件的一部分?
解决方案
您可以Blob.stream()
为此使用:
const bigBlob = new Blob(["somedata".repeat(10e5)]);
console.log("Will read a %sbytes Blob", bigBlob.size)
const reader = bigBlob.stream().getReader();
let chunks = 0;
reader.read().then(function processChunk({ done, value }) {
if (done) {
console.log("Stream complete. Read in %s chunks", chunks);
return;
}
// do whatever with the chunk
// 'value' is an ArrayBuffer here
chunks++;
return reader.read().then(processChunk);
}).catch(console.error);
推荐阅读
- xamarin.forms - 如何在组列表视图中使用分页
- java - Is there a way to crop an SVG using java-batik?
- spring - Spring boot static resources and controllers endpoint mixed
- react-native - 如何从反应原生包中禁用羽毛笔编辑器的自动缩放?
- api - Strapi Cron 在迁移到版本 strpi-3.0.0 后不起作用
- javascript - 我的锚标签不断打开我服务器上的链接
- c++ - 通过函数参数使模板函数选择类型
- c# - Xamarin.Forms:安卓
和依赖服务? - python - 如何让敌人向玩家移动并在pygame中预测它的路径
- database - Jessneggers / Laravel MongoDB whereRaw 查找不起作用