blob不接受ios上的Uint8Array

时间:2013-01-15 15:27:13

标签: javascript ios google-chrome blob

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

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

有解决方法吗?

1 个答案:

答案 0 :(得分: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});

修改

确切的Chrome弃用邮件是:

  

Blob构造函数中不推荐使用ArrayBuffer值。使用   而不是ArrayBufferView。