Node.js 中 Base64 编码原理是什么?一文介绍 nodejs 中 base64 的用法

Base64 是一种常用的二进制数据编码方式,使二进制数据能够以可打印字符的形式传输和存储。Node.js 提供了内置的 Buffer 对象来方便地进行 Base64 编码和解码操作。

用 Apifox,节省研发团队的每一分钟

Node.js 中 Base64 编码原理是什么?一文介绍 nodejs 中 base64 的用法

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

在计算机领域中,Base64 是一种常用的编码方式,用于将二进制数据转换为可打印字符,以便在文本协议中传输,例如在网络请求中或在文本文件中存储二进制数据。Node.js 也提供了对 Base64 编码和解码的支持,使开发者能够方便地处理二进制数据的转换。

nodejs 中 base64 编码原理
nodejs 官网下载页

Base64 编码原理

Base64 编码使用一种将二进制数据映射为 ASCII 字符的方法。它将每 3 个字节的二进制数据(24 位)转换为 4 个 Base64 字符(每个字符 6 位)。这样,Base64 编码后的数据会稍微膨胀,因为每 3 字节的二进制数据会编码成 4 个字符。

Node.js 中的 Base64 编码和解码

在 Node.js 中,你可以使用内置的 Buffer 对象来进行 Base64 编码和解码操作。Buffer 提供了方便的方法来将二进制数据转换为 Base64 编码的字符串,以及将 Base64 编码的字符串解码为二进制数据。

Base64 编码

使用 Buffer 对象的 toString() 方法,将二进制数据转换为 Base64 编码的字符串:

const binaryData = Buffer.from('Hello, Base64 Encoding!', 'utf-8');
const base64String = binaryData.toString('base64');
console.log(base64String);

Base64 解码

使用 Buffer.from() 方法,将 Base64 编码的字符串解码为二进制数据:

const base64String = 'SGVsbG8sIEJhc2U2NCBFbmNvZGluZyE=';
const binaryData = Buffer.from(base64String, 'base64');
console.log(binaryData.toString('utf-8'));

实践案例:Base64 编码和解码

下面是一个详细的可以直接运行的案例,演示了如何读取图片文件,将其编码为 Base64 字符串,然后解码并保存为新的图片文件。


首先,确保你有一张名为 image.png 的图片文件在与脚本相同的目录下。

const fs = require('fs');

// 读取图片数据
const imagePath = 'image.png';
const imageData = fs.readFileSync(imagePath);

// 将图片数据进行 Base64 编码
const base64Image = imageData.toString('base64');

// 构建 Base64 数据 URI
const base64DataURI = `data:image/png;base64,${base64Image}`;

// 将 Base64 编码的字符串解码为图片数据
const decodedImageData = Buffer.from(base64Image, 'base64');

// 将解码后的图片数据写入文件
const decodedImagePath = 'decoded_image.png';
fs.writeFileSync(decodedImagePath, decodedImageData);

console.log('Base64 编码和解码已完成!');

这个案例中,我们首先读取了 image.png 图片文件的二进制数据,然后将其转换为 Base64 编码的字符串。我们还构建了一个 Base64 数据 URI,以便在 HTML 中直接显示编码后的图片。


接着,我们将 Base64 编码的字符串解码为二进制数据,并将解码后的数据写入一个新的文件 decoded_image.png。最后,在控制台输出一条消息表示编码和解码操作已完成。


要运行此脚本,确保在相同目录下有名为 image.png 的图片文件,并执行以下命令:

node script.js


编码并解码后的文件如图所示:

使用 nodejs 的 base64 编码并解码
使用 nodejs 的 base64 编码并解码

提示与注意事项

  • Base64 编码通常用于将二进制数据嵌入到文本协议中,例如在 HTML 中嵌入图片数据。
  • 虽然 Base64 编码在文本中更易于传输,但它会稍微增加数据的大小。
  • 在使用 Base64 编码和解码时,要确保使用正确的字符集,通常是 'utf-8'

通过 Apifox 调试后端接口

如果你是 Node.js 开发者,你经常需要与 API 打交道,确保你的应用程序能够正常工作。这时,一个强大的接口测试工具就会派上用场。

Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter,Apifox 支持调试 http(s)、WebSocket、Socket、gRPC、Dubbo 等协议的接口,并且集成了 IDEA 插件。在后端人员写完服务接口时,测试阶段可以通过 Apifox 来校验接口的正确性,图形化界面极大的方便了项目的上线效率。

使用 Apifox 调试后端接口
Apifox 调试接口界面图

总结

Base64 是一种常用的二进制数据编码方式,使二进制数据能够以可打印字符的形式传输和存储。Node.js 提供了内置的 Buffer 对象来方便地进行 Base64 编码和解码操作。本文介绍了 Base64 编码的原理、在 Node.js 中的使用方法,并通过一个实践案例演示了 Base64 编码和解码图片数据的过程。

知识扩展:



参考链接:

Node.js Buffer 文档:https://nodejs.org/dist/latest-v16.x/docs/api/buffer.html