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); }