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


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

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

 

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

 

 而blob對象 主持 主流 的瀏覽器 。所以轉換為blob再轉成file來上傳,代碼 如下:

   //轉成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就可以了

至此終於解決了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM