欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

base64通過json傳遞至后端

阮建安2年前8瀏覽0評論

在前后端分離的 Web 應(yīng)用中,前端往往需要把圖片或其他二進(jìn)制數(shù)據(jù)傳遞到后端,以便進(jìn)行一些處理,而 base64 編碼是一種常用的方式。Base64 是一種將二進(jìn)制數(shù)據(jù)編碼成 ASCII 字符的方法,通常用于在不支持二進(jìn)制數(shù)據(jù)傳輸?shù)膱鼍跋逻M(jìn)行數(shù)據(jù)傳輸。

在前端,我們可以使用 JavaScript 的 atob 和 btoa 方法進(jìn)行 Base64 編解碼。

// 將文件轉(zhuǎn)換為 base64 編碼
function fileToBase64(file) {
return new Promise((resolve, reject) =>{
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () =>{
const base64Str = reader.result.split(',')[1];
resolve(base64Str);
};
reader.onerror = reject;
});
}
// 將 base64 編碼轉(zhuǎn)換為文件
function base64ToFile(base64Str) {
const arr = base64Str.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], Math.random().toString(36).slice(-8), { type: mime });
}

在使用 Base64 編碼傳遞數(shù)據(jù)時,我們通常要考慮到傳輸量過大的問題。因為 Base64 編碼會使數(shù)據(jù)的大小增加約三分之一,所以對于大文件或者大規(guī)模數(shù)據(jù)的傳輸,最好對其進(jìn)行壓縮。在 JavaScript 中,我們可以使用 Pako.js 庫進(jìn)行數(shù)據(jù)壓縮。

// 壓縮數(shù)據(jù)
function compressData(data) {
return pako.gzip(data);
}
// 解壓數(shù)據(jù)
function decompressData(compressedData) {
return pako.ungzip(compressedData, { to: 'string' });
}

在前端將數(shù)據(jù)進(jìn)行壓縮后,我們需要將其轉(zhuǎn)換成字符串類型的 JSON 數(shù)據(jù),并通過 AJAX 請求或其他方式傳遞到后端。在后端,我們可以使用相應(yīng)語言提供的 Base64 解碼庫進(jìn)行解碼,然后再進(jìn)行其他操作。

總的來說,Base64 編碼是前端進(jìn)行二進(jìn)制數(shù)據(jù)傳輸?shù)某S梅绞剑⒁獾剿鼤箶?shù)據(jù)量大大增加,需要適時進(jìn)行壓縮。