如何用 ArrayBuffer 在 Fetch 中处理低级别的二进制流

ArrayBuffer 是 Fetch API 中操作原始字节最底层的选择,可通过 response.arrayBuffer() 获取,配合 Uint8Array 等视图读写,支持流式处理大文件及直接作为请求体发送二进制数据。Fetch API 默认将响应体转为高级抽象(如 JSON、文本或 Blob),但若需直接操作原始字节,ArrayBuffer 是最轻量、最底层的选择。它让你绕过自动编码解析,精准控制二进制数据的读写与转换。用 arrayBuffer() 获取原始字节Fetch 响应对象提供 arrayBuffer() 方法,返回一个 Promise,解析为 ArrayBuffer 实例------即一段连续的、未解释的内存块。示例:fetch('/image.png') .then(response => response.arrayBuffer()) .then(buffer => { console.log(buffer.byteLength); // 如 12480 console.log(buffer.constructor === ArrayBuffer); // true });用 Uint8Array 或其他视图读写字节ArrayBuffer 本身不可直接读取;必须通过类型化数组(如 Uint8Array、Int32Array、Float64Array)创建"视图"来访问内容。常见操作:按字节遍历:用 Uint8Array 查看每个 byte(0--255) 读取结构化数据:如从 buffer 开头读取 4 字节整数 → new Int32Array(buffer, 0, 1)0 修改内容:直接赋值给视图索引,会同步反映在底层 buffer 中示例(检查 PNG 签名):response.arrayBuffer().then(buffer => { const view = new Uint8Array(buffer); if (view0 === 0x89 && view1 === 0x50 && view2 === 0x4e && view3 === 0x47) { console.log('Valid PNG'); }});流式处理大文件:配合 ReadableStream 和 getReader()对超大响应(如百 MB 视频或模型文件),一次性加载到内存可能引发 OOM。Fetch 的 response.body 是 ReadableStream,可分块读取并逐段转为 ArrayBuffer。 Murf AI AI文本转语音生成工具

相关推荐
这个DBA有点耶5 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
用户8356290780515 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780515 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
这个DBA有点耶7 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技7 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend8 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence11 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
你好潘先生13 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师13 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码13 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python