Я пытаюсь создать простой 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');
Это связано с тем, что Blob ожидает массив кусков. Массив, который вы проходите, слишком велик для него. (Возможно, связано)
Решение просто состоит в том, чтобы обернуть этот массив в один длинный массив.
var arr = new Uint8Array(10485833);
console.log(new Blob([ arr ], {type:'application/octet-stream'}))
// ^_____^_____ wrapped in a single lengthed Array