Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Начать закачку файла пользователю (?) (https://javascript.ru/forum/misc/75481-nachat-zakachku-fajjla-polzovatelyu.html)

7ver2009 14.10.2018 07:58

Начать закачку файла пользователю (?)
 
Добрый день :)

Столкнулся со следующей задачей:
на бэк отсылается POST запрос с данными, по этим данным приходит CSV файл с выборкой договоров. Пользователь по клику на кнопку должен начать скачку этого файла.

Собственно вопрос: Как реализовать механику начала скачки файла пользователю?

Всегда имел дело с GET запросами, и реализовывал скачку через вставку url в href элемента ссылки. Но тут POST запрос, и от него сложно отказаться, слишком раздутое body с параметрами выборки.

:help: :help: :help:

laimas 14.10.2018 08:01

Цитата:

Сообщение от 7ver2009
Всегда имел дело с GET запросами, и реализовывал скачку через вставку url в href элемента ссылки.

Ну а в данном случае не прямая ссылка будет, а серверным скриптом будет отдаваться файл, и JS тут вообще не нужен, если только речь не об асинхронном запросе.

7ver2009 14.10.2018 09:55

Не совсем понял о чем вы. Я же не могу передать тело запроса через url, вставленный в href ссылки.
После POST запроса у меня в переменной CSV файл, который как-то нужно начать закачивать пользователю. Трабла в этом.

Aetae 14.10.2018 11:17

Ну либо отправлять POST запрос через submit скрытой формы - дедовский метод, либо получать ответ как blob, ссылку на него через URL.createObjectURL(blob) и делать ссылку с атрибутом download.

laimas 14.10.2018 11:54

Цитата:

Сообщение от 7ver2009
После POST запроса у меня в переменной CSV файл

В чьей переменной? Вы же пишите - "по этим данным приходит CSV файл с выборкой договоров", то есть файл создает и отдает сервер? А зачем серверу в этом случае JS? Если сервер сформировал и отдал файл, то его он может отдать программно.

В случае же асинхронного запроса или иного, например файл готовит клиент, тогда с BLOB работаем.

Aetae 14.10.2018 12:15

Ну и ещё классический вариант: запоминать в сессии параметры, и при обращении через обычную GET ссылку, брать параметры из сессии. Но это уже 2 запроса.

destus 14.10.2018 14:10

7ver2009,
https://developer.mozilla.org/ru/doc...nt-Disposition


Часовой пояс GMT +3, время: 18:12.