Не удалось создать Blob: длина массива превышает поддерживаемый предел

1

Я пытаюсь создать простой 10.5mb Blob используя следующий (браузер Chrome):

var arr = new Uint8Array(10485833);
var blob = new Blob(arr, { type: 'application/octet-stream' });

Я получаю сообщение об ошибке:

Uncaught RangeError: Не удалось построить "Blob": длина массива превышает поддерживаемый предел.

Каков предел? Почему я не могу создать кадр 10mb? Что делать, если я хотел создать 50-мегабайтный кадр? 1gb blob?

Является ли Blob неправильным типом данных для использования здесь? В конце я пытаюсь построить некоторые FormData для публикации на сервер. Пример:

var fd = new FormData();
var blob = new Blob(arr, { type: 'application/octet-stream' });
fd.append('data', blob, 'filename.zip');
Теги:

1 ответ

4
Лучший ответ

Это связано с тем, что Blob ожидает массив кусков. Массив, который вы проходите, слишком велик для него. (Возможно, связано)

Решение просто состоит в том, чтобы обернуть этот массив в один длинный массив.

var arr = new Uint8Array(10485833);
console.log(new Blob([ arr ], {type:'application/octet-stream'}))
//                   ^_____^_____ wrapped in a single lengthed Array

Ещё вопросы

Сообщество Overcoder
Наверх
Меню