最近 做項目,做的要是拍照后上傳相片,以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就可以了
至此終於解決了