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 に答える