У меня есть объект XHR, который загружает 1GB-файл.Большой файл blob в Javascript
function getFile(callback)
{
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (xhr.status == 200) {
callback.apply(xhr);
}else{
console.log("Request error: " + xhr.statusText);
}
};
xhr.open('GET', 'download', true);
xhr.onprogress = updateProgress;
xhr.responseType = "arraybuffer";
xhr.send();
}
Но API Файл не может загрузить все, что в памяти даже от рабочего он выбрасывает из памяти ...
btn.addEventListener('click', function() {
getFile(function() {
var worker = new Worker("js/saving.worker.js");
worker.onmessage = function(e) {
saveAs(e.data); // FileSaver.js it creates URL from blob... but its too large
};
worker.postMessage(this.response);
});
});
Web Worker
onmessage = function (e) {
var view = new DataView(e.data, 0);
var file = new File([view], 'file.zip', {type: "application/zip"});
postMessage('file');
};
Я m не пытается сжать файл, этот файл уже сжат с сервера.
Я думал, что хранить его первым на IndexedDB, но я я буду загружать блоб или файл в любом случае, даже если я сделать запрос байтами диапазона, рано или поздно мне придется построить этот гигантский сгусток ..
Я хочу создать blob: url и отправить его пользователю после загрузки браузером
Я использую API FileSystem для Google Chrome, но я хочу сделать что-то для firefox, я заглянул в File Handle Api, но ничего ...
Должен ли я создать расширение для firefox, чтобы сделать то же самое, что и FileSystem для google chrome?
Ubuntu 32 бит
ли он работать, когда вы загрузили меньше \ *. Почтовый файл? Ошибка выглядит знакомой для меня, «вне памяти». – Hydro
Да, это сработало, просто для больших реальных –
Хм ... можете ли вы попытаться предупредить что-либо, когда срабатывает событие btn click? Когда ошибка будет сброшена, сообщите нам количество оповещений, которые вы получили здесь – Hydro