js文件处理 Blob File Buffer TypedArray ArrayBuffer之间的关系

官方文档

Blob
File
Buffer
Buffer.from
Buffer.from
TypedArray
ArrayBuffer

关系

继承关系

Buffer 是 node 中的类型 Buffer 继承于 Uint8Array
Uint8Array 继承于 TypedArray (或者说是其中一种实现 TypedArray 不能直接new )
TypedArray 有以下类型

转换关系

ArrayBuffer 类型转换中的关键! 可以转换为任何类型, 其他类型也可以转化为 ArrayBuffer

Buffer.from 接收 ArrayBuffer 转换为 Buffer
Buffer.buffer 可以获取到 ArrayBuffer

Uint8Array.buffer 可以获取到 ArrayBuffer
new Uint8Array 接收 ArrayBuffer 可以转化为 Uint8Array

new Blob 和 File 都可以接收 ArrayBuffer,ArrayBufferView,Blob 生成参数
Blob.arrayBuffer() 返回一个 promise 且包含 blob 所有内容的二进制格式的 ArrayBuffer

// Uint8Array | ArrayBufferView | TypedArray
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer)
uint8.buffer === buffer // true
// node buffer
const buffer = new ArrayBuffer(8);
const buf = Buffer.from(buffer)
buf.buffer === buffer // true
// Blob
const buffer = new ArrayBuffer(8);
let blob = new Blob([buffer])
blob.arrayBuffer().then((buf=>console.log(buf))) // buf !== buffer
// File
const buffer = new ArrayBuffer(8);
let file = new File([buffer],"file.xxx")
file.arrayBuffer().then((buf=>console.log(buf))) // buf !== buffer
posted @ 2023-01-10 18:39  __Bowen  阅读(740)  评论(0编辑  收藏  举报