簡體   English   中英

將 Blob 對象轉換為文件,用於 Ms Edge

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM