概述解压大文件时应使用流式管道。本文展示 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 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.732183s