base64格式時圖片打印出來爲
data:image/bmp;base64,LASDJFLKAJDFLKASDJFL...很長一大截
轉化函數
function dataURLtoFile(dataurl, filename = 'file') {
let arr = dataurl.split(',')
let mime = arr[0].match(/:(.*?);/)[1]
let suffix = mime.split('/')[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime
})
}
使用
var imgFile = dataURLtoFile(base64Img);//二進制file文件類型
but............. 對於new File這個接口
我就遇到了問題,十幾個手機裏面,就一個iphone7無法使用。。。。。。。
解決辦法:
//base64轉blob文件函數
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr =atob(arr[1]);
var n = bstr.length;
var u8arr =new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {type: mime });
}
var date = new Date();
var formData = new FormData();
formData.append('file',dataURLtoBlob(base64Img),'IMG_'+date .getFullYear()+(date .getMonth()+1)+date .getDate()+Math.ceil(Math.random()*100)+'.jpeg');