base64转blob为什么要去掉base64中的后两位
以下是网上抄的代码
function dataURLtoBlob(dataurl) {
const arr = dataurl.split(',');
//注意base64的最后面中括号和引号是不转译的
const _arr = arr[1].substring(0, arr[1].length - 2);
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(_arr);
let n = bstr.length
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime
});
}
其中
//注意base64的最后面中括号和引号是不转译的
const _arr = arr[1].substring(0, arr[1].length - 2);
这两句是什么意思.
自己用的base64中, 最后两位不是括号也不是引号, 而是不确定的两位字符.
已知遇到过的情况有: "==" "I=" "CC"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个不太清楚,但是我知道另一种
base64 --> blob
的方式:更多 blob --> file --> dataURL(base64) | blobURL --> blob 转换闭环可查看这里
得看到元数据啥样,说不定就是因为都多带了一个字符
base64 的转码规则决定了原文字节长度除3余1的时候会==补全,余2的时候会=补全,整除的时候就不会有等号了
应该不是去掉等号用的,看注释说是去掉
最后面中括号和引号
貌似是元数据包含了中括号和引号?