BLOB-объект не принимает Uint8Array на IOS

Я пытаюсь создать объект Blob и передать Uint8Array его конструктору. Он отлично работает на chrome и firefox на окнах. В chrome и safari на ios, однако, Blod содержит не данные Uint8Array, а текст: [object Uint8Array]

Мне нужно это, чтобы загрузить холст на сервер.

Есть ли обходной путь?

1 ответ

Решение

Я борюсь с точно такой же проблемой. Когда я создаю резервную копию Uint8Array с помощью ArrayBuffer, он работает как в Safari, так и в Chrome (пока не тестировался в других браузерах), но Chrome выводит предупреждающее сообщение. Chrome говорит, что я должен обернуть ArrayBuffer в DataView, прежде чем передавать его в конструктор Blob().

// 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.

Другие вопросы по тегам