如何用 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文本转语音生成工具

相关推荐
YOU OU8 小时前
Redis基础常识与命令
数据库·redis·缓存
Scott9999HH8 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
AI云海9 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰10 小时前
[爬虫]-Urllib
爬虫·python
Database_Cool_10 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森11 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_11 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
玉鸯11 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
姜太小白12 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql