При загрузке больших файлов (4+ Gb),файлы открываются через стандартную функцию
var reader = new FileReader();
reader.readAsArrayBuffer(file);
в консоли браузера вываливается ошибка
Error ProgressEvent {isTrusted: true, lengthComputable: true, loaded: 0, total: 6777708138, type: "error"…}
Можно ли как то это обойти. Это нужно для подсчёта хэша файла, или может есть ещё какой-то способ получить уникальный id загружаемого файла в браузере.
Хром 56 читает примерно до 3Gb, потом вываливается с ошибкой браузера "Сhrome не хватает памяти".
При попытке загрузить файлы 8-200Gb сразу вываливается ошибка ProgressEvent
.
Очевидно, что хром оберегает память (ха!) и не даёт её убить всю.
Можно считать произвольные 1-2Gb из файла и хэшировать их:
let inp = document.querySelector('input'),
fr = new FileReader(),
chunk = 100; // 100bytes
inp.addEventListener('change', _ => {
// Если выбранный файл меньше чанка,
// берём всё, иначе отрезаем кусочек у начала по размеру чанка
let blob = inp.files[0].size <= chunk ? inp.files[0] : inp.files[0].slice(0, chunk);
fr.onloadend = _ => {
let chunkOfFile = fr.result;
console.info(chunkOfFile);
};
fr.readAsArrayBuffer(blob);
});
<input type='file' />
Работа с такими файлами в браузере - дело странное, подумайте об альтернативных путях.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую плагин easyzoomjs для изображений, но требуется он только для ПК, а для моб
Есть скрипт, который при наведении на элемент меню должен менять класс у блока с подкатегориями