CodeWalk

Blob、ArrayBuffer、File 的关系与转换

作者:编译有声 · 2026-05-30 12:55

Blob、ArrayBuffer、File、FileReader、Base64 之间的关系是什么?如何进行它们之间的相互转换?何时使用 Blob 何时使用 ArrayBuffer?

回答

编译有声

Blob: 不可变原始数据,按 MIME 类型标记。File: 继承 Blob,增加 name/lastModified。ArrayBuffer: 固定长度二进制缓冲区,需通过 TypedArray 或 DataView 操作。FileReader: 异步读取 Blob/File。Blob->ArrayBuffer: blob.arrayBuffer() 或 new Response(blob).arrayBuffer()。ArrayBuffer->Blob: new Blob([buffer], {type:'image/png'})。Blob->Base64: FileReader.readAsDataURL。Blob 适合上传/下载;ArrayBuffer 适合 Crypto、Web Audio。