簡體   English   中英

IE11與Blob構造函數和javascript數組不兼容

[英]IE11 doesn't work well with Blob constructor & javascript array

我一直在使用HTML5的Blob來整合包括文件和字符串在內的大量數據。 由於要發送的文件和字符串不是在程序中預先指定的,我需要將所有數據打包到JS文件中並立即發送,所以我使用javascript數據收集可用數據,然后將此數組作為參數Blob構造函數。 它在Chrome和Firefox中運行良好,但在使用IE11時會拋出一個javascript錯誤。

@#$%中第161行第9行的未處理異常.js 0x800a139e - JavaScript運行時錯誤:InvalidStateError

我的代碼如下:

var blobPackage_array = [];
if(userType != null)
    blobPackage_array.push(userType);

if(userInfo != null)
    blobPackage_array.push(userInfo);

for (var i = 0; i < fileList.length; i++) {
    blobPackage_array.push(fileList[i]);
}  

var blobPackage = new Blob(blobPackage_array); //throw javascript runtime error

我以前懷疑IE不支持Blob,所以我測試了這個:

var blobPackage = new Blob(["test", fileList[0]]);  

它工作正常,沒有錯誤。 我的最后一個猜測是IE不能將blobPackage_array識別為Blob構造函數的有效參數。 但是Blob沒有附加方法,同時我不知道需要附加多少文件,這意味着我無法一勞永逸地構造Blob。 有沒有遇到過這個? 我能用什么繞過這個? 我很感激任何建議。


更新! 出於某種原因,我不能使用FormData ,它必須是blob ...任何人都可以幫助我嗎?


再次更新! 感謝您的回復,有一些進展。 我檢查過MSDN,Blob的構造函數應該是這樣的: var blobObject = new Blob([new Uint8Array(array)], { type: 'image/png' }); 我試圖構建Uint8ArrayblobPackage_array通過此var uint8array = new Uint8Array(blobPackage_array); 我發現這個轉換時數據丟失了。 但事實上, var blobPackage = new Blob([uint8array]); 可以正常工作,沒有錯誤。 因此,我只需要修復轉換問題。

我想通了。 我是個白痴。我不認識我原來的blobPackage_array作為有效參數,因為我附加了這些變量:

if(userType != null)
    blobPackage_array.push(userType);

我只需要通過這個驗證userType

if(userType != null)
    blobPackage_array.push(new String(userType));

所以,不要費心將所有數據轉換為UInt8Array類型......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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