Загрузите несколько фрагментов из списка URL-адресов BLOB-объектов Azure за одно действие в javascript без архивирования - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать на своем веб-сайте простую утилиту загрузки для BLOB-объекта Azure. На данный момент у меня есть следующий дизайн.

Current Design

В основном список всех файлов в 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);
}

Этот код всегда загружает последний файл.

Итак, я застрял либо скачав все файлы в памяти и затем сжав их, либо разрешив загрузку только одного файла. Есть ли другой подход, который я могу попробовать? Может быть, открытие скрытых вкладок на странице?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...