9

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

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

有解决方法吗?

4

1 回答 1

11

我正在努力解决完全相同的问题。当我使用 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 值在 Blob 构造函数中已弃用。请改用 ArrayBufferView。

于 2013-01-17T23:23:31.580 回答