Родной способ загрузки / сохранения нескольких файлов с помощью JavaScript (в пользовательском сценарии) - PullRequest
0 голосов
/ 31 августа 2018

Я ищу хороший способ загрузки и сохранения нескольких файлов с помощью JavaScript, аналогично тому, как работает нативная загрузка.

Есть ли такой способ? (способы, которые я пробовал, см. Ниже)

Вот путешествие, которое я прошел, от общего к эзотерическим решениям:

  1. window.location отлично работает для одного файла, не работает для нескольких файлов.
  2. window.open вызывает блокировку всплывающих окон. Даже если действие вызывается в ответ на действие пользователя (нажатие клавиши). Я не уверен, как настроить его так, чтобы он не вызывал блокиратор. Или что это вообще возможно сделать.
  3. FileSaver.js работает в общем *, однако этот метод опирается на ajax-запрос для извлечения данных и преобразования ответа в загружаемую клиентскую часть. Это медленный и интенсивный процессор.
    * Но не здесь **, см. 5.
    ** Технически это может быть сделано для работы здесь (я думаю, не проверял), так как у меня есть доступ к GM_xmlhttpRequest, см. 4.
  4. GM_download:
    Так как это пользовательский скрипт, у меня есть доступ к GM_download. Здесь есть одна большая проблема. Эта функция требует имени. У меня нет этого имени. URL на самом деле является перенаправлением. У меня была идея увидеть, куда идет перенаправление - например, fetch(url, {redirects: 'manual'}) - это приводит к некоторому ответу opaqueredirect, который не несет абсолютно никакой полезной информации.
  5. fetch ing with method = HEAD, поэтому я получаю имя файла в конце цепочки перенаправления. К сожалению, это не удается, потому что конечной точкой является HTTP, а выборка запускается из HTTPS, и браузер блокирует запрос.
...