Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),以后在6位的前面补两个0,造成8位一个字节的形式。 若是剩下的字符不足3个字节,则用0填充,输出字符使用’=’,所以编码后输出的文本末尾可能会出现1或2个’=’后端
经过base64编码原理咱们知道,base64的图片字符流中的每8个字符就有两个是用0补充,并且字符流的末尾还可能存在‘=’号,咱们能够经过这个原理计算图片的文件流大小。编码
getImgByteSize(data) { if (data.graphicContents) { // 获取base64图片byte大小 const equalIndex = data.graphicContents.indexOf('='); // 获取=号下标 if (equalIndex > 0) { const str = data.graphicContents.substring(0, equalIndex); // 去除=号 const strLength = str.length; const fileLength = strLength - (strLength / 8) * 2; // 真实的图片byte大小 data.size = Math.floor(fileLength); // 向下取整 } else { const strLength = data.graphicContents.length; const fileLength = strLength - (strLength / 8) * 2; data.size = Math.floor(fileLength); // 向下取整 } } else { data.size = null; } }
data.graphicContents是后端获取的base64图片的字符串。code
getBase64(file: File) { const reader = new FileReader(); reader.addEventListener('load', () => { const base64Str = reader.result.toString(); const base64Url = base64Str.split('base64,')[1]; //获取上传图片的base64码 }); reader.readAsDataURL(file); }