概述解压大文件时应使用流式管道。本文展示 GZIP 解压并写入 OPFS 的端到端流程。解压管道与保存async function saveGzipToOPFS(url, path) {

const res = await fetch(url);

const ds = new DecompressionStream('gzip');

const stream = res.body ? res.body.pipeThrough(ds) : new Blob([await res.arrayBuffer()]).stream().pipeThrough(ds);

const reader = stream.getReader();

const root = await navigator.storage.getDirectory();

const segments = path.split('/').filter(Boolean);

let dir = root; for (let i=0;i<segments.length-1;i++) dir = await dir.getDirectoryHandle(segments[i], { create: true });

const fh = await dir.getFileHandle(segments[segments.length-1], { create: true });

const ws = await fh.createWritable();

while (true) { const { value, done } = await reader.read(); if (done) break; await ws.write(value); }

await ws.close();

}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部