二进制数组转换成 base64 字符串

372 阅读1分钟

二进制数组转换成 base64 字符串

  • 需求:后端返回验证码图片,格式是二进制数组 ArrayBuffer,前端转换成 base64 字符串在页面显示
const getImageCode = async () => {
  let codeImage = "";
  const { data } = axios({
    url: "/imagecode",
    // 指定响应数据格式
    responseType: "arraybuffer",
  });
  console(data); // 二进制数组,对固定长度的连续内存空间的引用
  console(data instanceof ArrayBuffer); // true
  // 需要操作ArrayBuffer,需要“视图”对象
  console.log(new Uint8Array(buffer));
  // 将二进制数组转换成二进制字符串再转换成base64字符串
  const base64Str = window.btoa(
    new Uint8Array(buffer).reduce((preByte, curByte) => preByte + String.fromCharCode(curByte), "")
  )
  codeImage = `data:image/gif;base64,${base64Str}`
};

参考资料