📅  最后修改于: 2023-12-03 15:39:20.264000             🧑  作者: Mango
在 JavaScript 中,我们可以使用 btoa
函数将字符串转换为 Base64 编码,但是如果我们要将二进制数据或者说是缓冲区转换为 Base64 编码,该怎么做呢?答案是使用 btoa
的逆函数 atob
结合 Blob 和 FileReader 对象。
下面是将缓冲区转换为 Base64 的完整 JavaScript 代码:
function bufferToBase64(buf) {
var binstr = Array.prototype.map.call(buf, function (ch) {
return String.fromCharCode(ch);
}).join('');
return btoa(binstr);
}
function readFile(file) {
return new Promise((resolve, reject) => {
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {
resolve(bufferToBase64(this.result));
};
reader.onerror = function (e) {
reject("文件读取失败");
};
});
}
代码中的 bufferToBase64
函数将缓冲区转换为一个字符串,然后使用 btoa
函数将字符串编码为 Base64。
接下来的 readFile
函数使用 FileReader 对象读取文件的数据,得到一个 ArrayBuffer 类型的对象,将其传递给 bufferToBase64
函数进行 Base64 编码,并将结果封装在 Promise 对象中返回。可以通过捕获 Promise 对象的 resolve 或 reject,获取该函数的执行结果。
这是一个简单但非常实用的函数,它可以在很多场景下使用,如将文件转换为 Base64 编码,将图片转换为 Base64 编码等。
以上是将缓冲区转换为 Base64 的 JavaScript 代码,如果您有任何的疑问或建议,欢迎在评论区留言。