一、什麼是base64轉file?
Base64是一種將二進制數據編碼成ASCII字符的方法。在網絡上傳輸時,某些格式對二進制數據有限制,例如圖片、音頻、視頻格式。這時候,將二進制數據編碼成ASCII字符,再傳輸就可以解決此問題。通過使用Base64編碼和解碼可以實現文件的傳輸,接收方可以通過相應的方式將Base64編碼還原成原來的文件。base64轉file則是將Base64編碼的字符串轉換成相應的文件格式。
二、base64轉file的實現
實現這個功能的方案有很多種,下面是其中一種實現方式:
function base64toFile(base64Data, fileName) {
var arr = base64Data.split(',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], fileName, {type:mime});
}
此函數將傳入的Base64編碼文件數據,通過解碼還原成原始數據,再構造成相應的File對象。該函數接收兩個參數,base64Data表示Base64編碼的文件數據,fileName表示還原後的文件名。
三、如何使用base64轉file?
可以將base64toFile方法封裝起來,方便調用。下面是一個使用示例:
function downloadImage() {
var base64Data = 'data:image/png;base64,iVBORw0KGg....(以下省略)';
var fileName = 'image.png';
var file = base64toFile(base64Data, fileName);
var a = document.createElement('a');
a.download = fileName;
a.href = URL.createObjectURL(file);
a.click();
URL.revokeObjectURL(a.href);
}
上面的代碼中,我們將Base64編碼數據傳入base64toFile方法,得到File對象。接着,我們將File對象用於下載,使用URL.createObjectURL創建一個URL,之後再通過a標籤進行下載即可。調用URL.revokeObjectURL可以釋放該URL。
四、base64轉file的優缺點
Base64轉File的主要優點在於,可以通過Base64編碼將任意類型的文件數據傳輸到服務器,而不需要特殊的文件傳輸協議;另外,我們不需要擔心文件在傳輸過程中會被破壞或者因不兼容問題而無法傳輸。
Base64轉File的主要缺點在於,Base64編碼文件數據會增加傳輸數據量。例如,對於一個100KB的二進制數據,編碼後的Base64字符串為133KB左右。此外,Base64編碼後的數據不能壓縮,因為壓縮後的內容大部分是亂碼,難以解碼。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/311024.html