首页 > 解决方案 > 如有必要,将 = 或 == 添加到 base64

问题描述

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

尝试将此 base64 发送到服务器时,它会返回错误,因为字符串末尾缺少=or 。==

所以我得到了base64

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

  let base64  = file.dataURI;

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

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

标签: javascriptionic-frameworkbase64

解决方案


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

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

推荐阅读