JavaScript-Blob在iOS上不接受Uint8Array

我尝试创建一个Blob对象,并将Uint8Array传递给它的构造函数
Windows上的chrome和firefox上工作正常
但是,在iOS上的chrome和safari中,Blod不包含Uint8Array的数据,而是文本:[object Uint8Array]

我需要将画布上传到服务器.

有解决方法吗?

最佳答案
我正在为完全相同的问题而苦苦挣扎.当我使用ArrayBuffer备份Uint8Array时,它在Safari和Chrome中都可以工作(尚未在其他浏览器中进行测试),但Chrome会显示警告消息. Chrome表示,在将ArrayBuffer传递给Blob()构造函数之前,必须将其包装在DataView中.

// write the bytes of the string to an ArrayBuffer
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
}

new Blob([ab], {type: mimeString});

编辑

Chrome弃用的确切消息是:

ArrayBuffer values are deprecated in Blob Constructor. Use
ArrayBufferView instead.

转载注明原文:JavaScript-Blob在iOS上不接受Uint8Array - 代码日志