如何用流式处理 ReadableStream 实时读取 Fetch 的大文件

张开发
2026/6/8 0:27:24 15 分钟阅读
如何用流式处理 ReadableStream 实时读取 Fetch 的大文件
用 ReadableStream 流式读取 fetch 大文件需避免调用 text()/json()改用 response.body.getReader() 逐块读取 Uint8Array配合 TextDecoder 按需解码并处理截断字符同时用 try/catch、reader.cancel() 和 AbortController 实现健壮的错误处理与取消机制。用 ReadableStream 流式读取 fetch 的大文件核心是避免把整个响应体加载进内存而是边接收、边处理。关键在于不调用 response.text() 或 response.json() 这类“全量解析”方法改用 response.body 获取可读流再通过 getReader() 逐块读取。获取并校验流式响应体fetch 返回的 Response 对象中body 属性就是 ReadableStream前提是服务器支持分块传输且未禁用流。需先确认请求成功且响应体存在检查 response.ok 和 response.status 确保 HTTP 状态正常 确认 response.body 不为 null某些重定向或空响应可能没有 body 可选用 response.headers.get(content-length) 预估大小但流式场景下该值常为空因分块传输不预设总长用 reader 循环读取 chunk调用 response.body.getReader() 获取 ReadableStreamDefaultReader然后用 read() 方法持续拉取数据块 ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器可以生成200多个不同风格的酷炫虚拟头像

更多文章