解決 new file()在IOS下不兼容 的問題

最近 作項目,作的要是拍照後上傳相片,以file格式上傳。。因此 拍照 後用canvas生成base64格式再轉file。。在PC和安卓都是沒有問題,到IOS上面不行。。new file後就是生成一個{};canvas

查了下file對象 ,支持的瀏覽器以下:瀏覽器

 

接口文檔 上面 介紹的是file也是 特殊的類型blob:spa

 

 而blob對象 主持 主流 的瀏覽器 。因此轉換爲blob再轉成file來上傳,代碼 以下:code

 //轉成blob
function dataURLtoBlob(toDataURL) {
var arr = toDataURL.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); }
    //轉成file function blobToFile(Blob, fileName) { Blob.lastModifiedDate
= new Date(); Blob.name = fileName; return Blob; } // 調用以下 let bold = dataURLtoBlob(base64Url); let file = blobToFile(bold, "fileName"); // 上傳file就能夠了

至此終於解決了對象

相關文章
相關標籤/搜索