Node.js 提供了一个内置的核心模块 buffer
,用于处理二进制数据。在前端开发中,我们也可以通过 npm 包 buffer
来使用这个模块。
安装
在项目目录下执行以下命令安装 buffer
:
npm install buffer
创建 Buffer 实例
我们可以使用 Buffer.from()
方法创建一个 Buffer 实例,其参数可以是字符串、数组或 ArrayBuffer 等多种类型的数据。
-- -------------------- ---- ------- ----- ---- - ------------------ ------- -------- ------------------ -- ------- -- -- -- -- -- -- -- -- -- -- --- ----- ---- - ------------------ ----- ----- ----- ------- ------------------ -- ------- -- -- -- -- --- ----- ---- - --------------- ---------------- ------------------ -- ------- -- -- -- -- ---
Buffer 的常用方法
buf.toString([encoding[, start[, end]]])
将 Buffer 对象转换为字符串,默认使用 utf8 编码。
const buf = Buffer.from('hello world', 'utf8'); console.log(buf.toString()); // 'hello world'
buf.toJSON()
将 Buffer 对象转换为 JSON 对象。
const buf = Buffer.from('hello world', 'utf8'); console.log(buf.toJSON()); // { type: 'Buffer', data: [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ] }
Buffer.isBuffer(obj)
判断一个对象是否为 Buffer 对象。
const buf = Buffer.from('hello world', 'utf8'); console.log(Buffer.isBuffer(buf)); // true console.log(Buffer.isBuffer('hello world')); // false
示例代码
下面是一个使用 buffer
包处理图片的示例代码:
-- -------------------- ---- ------- ----- -- - -------------- ----- ------ - ------------------ ----- ---------- - --------------------------------- ----- ------ - --- --------------------- ------- -- - ------------------- --- -------------------- -- -- - ----- ---------- - ---------------------- ----- --------- - ------------------------------ -------------------------------------------------- ---
以上代码中,我们首先使用 Node.js 的内置模块 fs
创建一个读取文件流,并将每个数据块存入一个数组中。当读取流结束时,再将这些数据块拼接成一个完整的二进制数据并转换为 base64 编码的字符串,最后打印出一个包含图片数据的 data URI。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/50825