如何用 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 (view[0] === 0x89 && view[1] === 0x50 && view[2] === 0x4e && view[3] === 0x47) { console.log('Valid PNG'); }});流式处理大文件:配合 ReadableStream 和 getReader()对超大响应(如百 MB 视频或模型文件),一次性加载到内存可能引发 OOM。Fetch 的 response.body 是 ReadableStream,可分块读取并逐段转为 ArrayBuffer。 Murf AI AI文本转语音生成工具

相关推荐
OrangeForce13 小时前
Monknow 书签导出工具:从本地存储提取数据并转为标准 HTML 书签
javascript·chrome·python·edge·html·firefox
才兄说13 小时前
机器人二次开发机器狗巡检?实时路径动态更新
python
yaoxin52112313 小时前
414. Java 文件操作基础 - 批量压缩与索引:将154首十四行诗高效存储为带目录的二进制文件
java·windows·python
繁星星繁13 小时前
Python基础语法(二)
android·服务器·python
毋语天14 小时前
Pandas 数据处理进阶:缺失值、合并、分组聚合与透视表
python·数据分析·pandas·数据清洗·透视表
结衣结衣.14 小时前
走进机器学习:新手必看的完整入门指南
人工智能·python·学习·机器学习
钝挫力PROGRAMER14 小时前
实战经验:如何修复 MariaDB 因 InnoDB 损坏导致的启动失败 (status=6/ABRT)
数据库·mariadb
我是一颗柠檬14 小时前
【MySQL全面教学】MySQL基础与环境搭建Day1(2026年)
数据库·后端·sql·mysql·database
我是一颗柠檬14 小时前
【MySQL全面教学】MySQL数据类型详解Day2(2026年)
数据库·后端·sql·mysql·database
一只fish14 小时前
Oracle官方文档翻译《Database Concepts 26ai》第10章-SQL
数据库·oracle