Я пытаюсь создать на своем веб-сайте простую утилиту загрузки для BLOB-объекта Azure. На данный момент у меня есть следующий дизайн.
В основном список всех файлов в datatable и кнопка для загрузки. При нажатии на эту кнопку я могу получить список URL-адресов для всех соответствующих BLOB-объектов.
Чтобы загрузить их все, в настоящее время я архивирую эти файлы и загружаю их одним выстрелом. При таком подходе проблема заключается в том, что мне нужно перенести все файлы в память браузера, а затем сжать их. Итак, технически, вся загрузка происходит до начала процесса архивирования. Я не хочу напрягать браузер, пытаясь сжать ГБ данных без необходимости, или пытаясь сохранить столько данных в оперативной памяти.
Сейчас я пытаюсь выяснить, могу ли я каким-то образом заставить браузер загружать все файлы, используя URL-адреса, вместо того, чтобы сначала загружать их в память браузера.
Я пытался зацикливаться на URL-адресах, но всегда получал только последний загруженный файл. Кроме того, изображения всегда открываются напрямую, а не загружаются.
Ниже приведен код, который я пытался зациклить.
function downloadAll(urls) {
var link = document.createElement('a');
link.setAttribute('download', null);
link.style.display = 'none';
document.body.appendChild(link);
for (var i = 0; i < urls.length; i++) {
link.setAttribute('href', urls[i]);
link.click();
}
document.body.removeChild(link);
}
Этот код всегда загружает последний файл.
Итак, я застрял либо скачав все файлы в памяти и затем сжав их, либо разрешив загрузку только одного файла. Есть ли другой подход, который я могу попробовать? Может быть, открытие скрытых вкладок на странице?