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

 

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