📜  将缓冲区转换为 base64 javascript (1)

📅  最后修改于: 2023-12-03 15:39:20.264000             🧑  作者: Mango

将缓冲区转换为 Base64 JavaScript

在 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 代码,如果您有任何的疑问或建议,欢迎在评论区留言。