gpt4 book ai didi

javascript - IE11 不能很好地处理 Blob 构造函数和 javascript 数组

转载 作者:行者123 更新时间:2023-12-01 01:43:14 26 4
gpt4 key购买 nike

我一直在使用 HTML5 的 Blob 来整合大量数据,包括文件和字符串。由于程序中没有预先指定要发送的文件和字符串,并且我需要将所有数据打包在JS文件中并立即发送,因此我使用javascript的Array来收集可用数据,然后将此数组作为参数Blob 构造函数。它在 Chrome 和 Firefox 中运行良好,但在使用 IE11 时会引发 JavaScript 错误。

Unhandled exception at line 161, column 9 in @#$%.js 0x800a139e - JavaScript Runtime Error: 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没有append方法,同时我也不知道需要append多少个文件,这意味着我无法一劳永逸地构造一个Blob。有人遇到过这种情况吗?我可以用什么来绕过这个?如果有任何建议,我将不胜感激。

<小时/>

更新!由于某种原因,我不能使用 FormData 代替,它必须是 blob...有人可以帮助我吗?

<小时/>

再次更新!感谢您的友好回复,有一些进展。我查了MSDN,Blob的构造函数应该是这样的:var blobObject = new Blob([new Uint8Array(array)], { type: 'image/png' });。我尝试通过此 var uint8array = new Uint8Array(blobPackage_array); 构造一个带有 blobPackage_arrayUint8Array 。我发现在这种转换过程中数据丢失了。但实际上, var blobPackage = new Blob([uint8array]); 可以正常工作,不会出现错误。因此我只需要解决转换问题。

最佳答案

我明白了这一点。我真是个白痴..IE 无法将我的原始 blobPackage_array 识别为有效参数,因为我附加了这些变量:

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

我只需要通过以下方式验证userType:

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

所以,不用费心将所有数据转换为 UInt8Array 类型...

关于javascript - IE11 不能很好地处理 Blob 构造函数和 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com