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

我需要将 Canvas 上传到服务器。

有解决方法吗?

最佳答案

我正在为完全相同的问题而苦苦挣扎。当我使用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弃用消息是:

关于javascript - Blob在ios上不接受Uint8Array,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14340989/

10-12 16:24