blob不接受ios上的Uint8Array

J.V*_*.V. 9 javascript google-chrome blob ios

我尝试创建一个Blob对象并将Uint8Array传递给它的构造函数它适用于Chrome上的chrome和firefox在ios上的chrome和safari但是Blod不包含Uint8Array的数据但文本:[object Uint8Array]

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

有解决方法吗?

Rob*_*ink 11

我正在努力解决同样的问题.当我使用ArrayBuffer备份Uint8Array时,它在Safari和Chrome中都有效(尚未在其他浏览器中测试过),但Chrome会打印一条警告消息.Chrome说我必须在将DataBuffer传递给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});
Run Code Online (Sandbox Code Playgroud)

编辑

确切的Chrome弃用邮件是:

Blob构造函数中不推荐使用ArrayBuffer值.请改用ArrayBufferView.

  • 这有助于我找到解决问题的方法:对于Uint8Array`u`,我将`u.buffer`传递给Blob构造函数而不是`u`本身. (5认同)