javascript - 如有必要,将 = 或 == 添加到 base64
问题描述
我正在使用Ionic Choose
插件在应用程序中获取文件,解析中的这个文件返回了我选择的文件的 base64,问题是这个 base64 永远不会以=
或==
在某些情况下必要时结束。
尝试将此 base64 发送到服务器时,它会返回错误,因为字符串末尾缺少=
or 。==
所以我得到了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);
推荐阅读
- java - 无法解析值“${server.port}”中的占位符“server.port”
- python - 如何将具有多年数据的日常数据的 csv 中的年度数据相加
- msbuild - 将 msbuild 条件保存在变量/属性中
- javascript - 如何创建粘性导航栏 css 和 javascript
- python - 有没有更好的方法将 datetime.datetime 对象从 gmt 转换为 pst?
- javascript - Laravel API 是否可以使用 Node API 并且此 Node API 在请求中调用相同的 Laravel API?
- ruby - Selenium 一直在尝试寻找 geckodriver,即使我认为我在使用 Ruby 2.3.3 时已经使用 Chromedriver 进行了设置
- r - .parallel 选项打开时,ddply() 不适用于自定义函数
- javascript - 如何从停止循环的提示中显示条目
- twitter-bootstrap - 包安装后 Bower 不会覆盖 bootstrap/dist/css