下面是nodejs之Base64编码解码问题的完整攻略:
什么是Base64编码解码?
Base64是一种二进制数据到文本数据的编码方式,可以把二进制数据编码成只包含64个可打印字符的文本形式,解码时再把文本数据变回二进制数据。Base64编码和解码是用在很多的网络传输中,例如通过URL传输数据,或者发送邮件等。
Base64编码是通过将3个8位字节转换为4个6位字节,生成一个包含64个字符的字符串,最后不足4个6位字节的,根据需要在末尾添加'='补足。
Base64解码就是把包含64个字符的字符串还原回原始的二进制数据。
在Node.js中,可以通过内置的Buffer模块来实现Base64编码解码。
Base64编码和解码方法
Base64编码方法
在Node.js中,可以使用Buffer对象的toString方法将二进制数据编码为Base64字符串。如下所示:
const originalData = 'hello world'
const encodedStr = Buffer.from(originalData).toString('base64')
console.log(encodedStr) // 输出 'aGVsbG8gd29ybGQ='
- 首先定义了原始二进制数据originalData;
- 然后将originalData转换为Buffer对象;
- 最后使用该Buffer对象的toString方法将数据编码为Base64字符串,并将编码结果赋值给encodedStr;
- 最后输出encodedStr,即为编码后的Base64字符串。
Base64解码方法
在Node.js中,可以使用Buffer对象的from方法将Base64字符串解码为原始的二进制数据。如下所示:
const encodedStr = 'aGVsbG8gd29ybGQ='
const originalData = Buffer.from(encodedStr, 'base64').toString()
console.log(originalData) // 输出 'hello world'
- 首先定义了Base64编码后的字符串encodedStr;
- 然后使用Buffer对象的from方法,将编码后的数据解码为二进制数据,并将解码结果赋值给originalData;
- 最后使用该Buffer对象的toString方法将数据转换为字符串,并输出结果。
示例说明
下面给出示例说明:
示例1:将图片文件转为Base64编码
const fs = require('fs')
fs.readFile('./test.jpg', (err, data) => {
if (err) throw err
const encodedStr = Buffer.from(data).toString('base64')
console.log(encodedStr)
})
- 首先使用fs模块的readFile方法读取图片文件数据;
- 然后将图片文件数据转换为Buffer对象,并使用Buffer对象的toString方法将数据编码为Base64字符串,并将结果赋值给encodedStr;
- 最后输出encodedStr,即为图片文件的Base64编码结果。
示例2:将Base64编码还原为图片文件
const fs = require('fs')
fs.readFile('./test.txt', (err, data) => {
if (err) throw err
const originalData = Buffer.from(data, 'base64')
fs.writeFile('./test_copy.jpg', originalData, err => {
if (err) throw err
console.log('The file has been saved!')
})
})
- 首先使用fs模块的readFile方法读取Base64编码后的数据;
- 然后使用Buffer对象的from方法将Base64编码的字符串解码为二进制数据,并将解码结果赋值给originalData;
- 最后使用fs模块的writeFile方法将解码后的二进制数据写入一个新的文件中,即可还原为图片文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs之base64编码解码问题 - Python技术站