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.