JS Blob、ArrayBuffer和Buffer 的使用

22 min read

JS中有三种二进制数据类型:Blob、ArrayBuffer和Buffer。

  1. Blob

Blob是一种二进制数据类型,适用于处理大量二进制数据,特别是文件。可以通过Blob对象将文件或者二进制数据转换为URL,在浏览器中可以通过URL访问,并可以实现大文件上传、下载等操作。

示例:

const blob = new Blob(['Hello, world'], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
console.log(url); // 输出:blob:https://example.com/3786f31d-455f-4dc1-928c-eca88422e458
  1. ArrayBuffer

ArrayBuffer是一种用于表示二进制数据的缓冲区对象,可以存储大小固定的二进制数据,不能直接读取或写入数据。通常使用视图(如Uint8Array)来读取和写入数据。

示例:

const buffer = new ArrayBuffer(16);
const uint8 = new Uint8Array(buffer);

uint8[0] = 1; // 设置第一个字节为1
console.log(uint8[0]); // 输出1
  1. Buffer

Buffer是Node.js中的二进制数据类型,适用于处理网络数据传输、文件系统等操作。Buffer是Uint8Array的子类,实现了许多有用的二进制数据操作方法。

示例:

const buf = Buffer.from('Hello, world');
console.log(buf.toString()); // 输出:Hello, world

const copy = Buffer.alloc(buf.length);
buf.copy(copy);
console.log(copy.toString()); // 输出:Hello, world

注:在浏览器端使用Buffer需要使用第三方库进行转换。