[英]Converting a Blob object into a File, for Ms Edge
我有一個 Blob 對象,它是一個圖像,我正在嘗試將其轉換為文件對象,但它在 MS Edge 版本 41 中顯示錯誤。我在第一次兩次嘗試中使用了 formdata
嘗試 1
fd.set('file', blobObj, fileName);
return (fd.get('file'));
這導致了錯誤
對象不支持此屬性或方法“設置”
嘗試 2
我用 append 替換了 set 然后我得到了這個
對象不支持此屬性或方法“get”
嘗試 3
我用一個看起來像這樣的新邏輯完全替換了 formdata
let fileObject = new File([u8arr], fileName, { type: mime });
我得到一個錯誤說
對象不支持此操作
有沒有其他方法可以使用? 我可以直接使用 blob 作為文件嗎?
AFAIK,您的第三種方法似乎有效,
通過將 mime 類型硬編碼為"image/jpeg" / "image/png"
並包含修改的日期,然后驗證一次
var fileInstance = new File([blob], "FileName",{type:"image/jpeg", lastModified:new Date()})
如果你在 javascript 中顯示它,你應該使用這樣的東西:
var URL = window.URL || window.webkitURL;
var url_instance = URL.createObjectURL(blob);
var image_source = new Image();
image_source.src = url_instance;
document.body.appendChild(image_source);
File 對象是一種特定類型的 Blob,它只是缺少兩個屬性:lastModifiedDate 和 name(文件名屬性)。
因此,您可以使用以下代碼將 blob 對象轉換為文件對象:
var blobtoFile = function blobToFile(theBlob, fileName) {
//A Blob() is almost a File() - it's just missing the two properties below which we will add
theBlob.lastModifiedDate = new Date();
theBlob.name = fileName;
return theBlob;
}
var file = blobtoFile(blob, "test.png");
有關使用上述代碼的更多詳細信息,請查看此示例。
此外,請檢查FormData Method Browser 兼容性,從中我們可以看到大多數方法支持 Microsoft Edge 44+(EdgeHTML 18+,更多詳細信息,請查看此文章)。
所以,如果你想使用FormData set或get方法,請嘗試升級Windows版本(Microsoft Edge是操作系統的一部分,不能單獨更新。它通過Windows Update接收更新,就像其他操作系統一樣系統。)。 否則,您可以使用 JavaScript 對象來存儲 blob 或文件對象。
詳細更新步驟如下: 選擇開始>設置>更新和安全> Windows 更新,然后選擇檢查更新並安裝任何可用更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.