base64格式圖片轉爲二進制圖片文件及new File兼容性解決

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章