如有必要,将 = 或 == 添加到 base64

Add = or == to a base64 if necessary

我正在使用 Ionic Choose 插件在应用程序中获取文件,这个在解决 returns 我选择的文件的 base64,问题是这个 base64 永远不会结束在某些情况下必要时使用 ===

尝试将此 base64 发送到服务器时 returns 出错,因为字符串末尾缺少 ===

所以我得到了 base64

this.chooser.getFile()
.then((file) => {

  let base64  = file.dataURI;

})
.catch((err) => {
  console.log(err);
});

我能否以某种方式检测 base64 是否需要 === 来完成字符串?

Base64 'blocks' 由 4 个字符组成,因此如果最后一个块包含的字符少于 4 个,则会用“=”符号填充,因此它可以包含 0 到 2 个“=”符号,这就是为什么dataURI的长度需要是4的倍数,你可以这样做:

  let base64  = file.dataURI;
  const len = base64.length;
  const modifiedBase64 = base64 + "=".repeat(len%4);