|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Начало проблемы: https://www.sql.ru/forum/1321376/rest-controller-vozvrashhaushhiy-fayl-excel https://www.sql.ru/forum/1321467/pokazat-v-brauzere-polzovatelu-otchet-sformirovannyy-na-servere-jasperreports Сделано: В браузере пользователь заполняет параметры отчета, нажимает кнопку "Сформировать отчет", в той же вкладке, ниже параметров, открывается сформированный отчет в html Добавилась задача: добавить кнопку "Скачать отчет в формате xlsx", по по нажатию на которую начинается скачивание xlsx файла. Делаю в сервисе так (не уверен, что это правильно): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Аналогично было сделано для html, и далее в контроллере Html обрабатывался следующим образом: Код: java 1. 2. 3. 4. 5. 6. 7.
Далее, на клиенте это попадает в JavaScript, там происходит следующее: Код: javascript 1. 2. 3. 4. 5. 6.
Вопрос: как обработать в контроллере полученный byte[], чтобы на клиент отправился xlsx файл? Как обработать этот файл на стороне клиента, чтобы он вызвал диалог сохранения файла в браузере? Может быть я вообще неверно подхожу к скачиванию файла с сервера? Как, в таком случае, правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:20 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, Основы веб приложений это переходы по урл. Есть альтернатива - приложения одного окна. Когда все пихают на один урл окно. Даже если тебя заставляют делать что то по ajax в том же окне - старайся не делать так. Да, без ajax окно моргнет и обновится за 0,1 сек. Но зато приложение будет большим, устойчивым к ошибкам и масштабируемым. .... То есть скачку файла в отдельном окне. Отчет не во вкладке а в отдельном окне. Либо вкладки из отдельных контроллеров окон. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:28 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, А если не обсуждать архитектуру приложения, то что по моим вопросам: как обработать в контроллере полученный byte[], чтобы на клиент отправился xlsx файл? Как обработать этот файл на стороне клиента, чтобы он вызвал диалог сохранения файла в браузере? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:33 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов Добавилась задача: добавить кнопку "Скачать отчет в формате xlsx", Отправить запрос на сервер сабмитом с перерисовкой страницы. То есть на данной странице тег form html и кнопка action post Чтобы потом получить то что надо на новую ModelView ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:34 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, Если не обсуждать то трудно вникать. Ты там намешал два отчета, upload download и параметры отчетов. Извини. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:36 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, если у тебя есть сформированный файл на диске Код: html 1.
в кнопки на событие клик Код: javascript 1.
ну заполнение тега a , с помощью ajax сделаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:39 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, 1. Что мне надо вернуть контроллеру из сервиса? Сейчас возвращается byte[]. 2. Сейчас я при экспорте указываю имя файла для экспорта. Правильно ли я понимаю, что в таком случае файл создается не на диске сервера, т.к. нет полного пути, а только в памяти? 3. В любом случае я отправляю с клиента HTTPRequest, как обработать полученную им из контроллера информацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:43 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, вам нужно указать клиенту, что делать с тем, что ему отдаёте: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:47 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, этим ты создаёшь файл на диске Код: java 1.
всё бы нормально, но если несколько юзеров нажмут на скачивание - что будет в файле? я б добавил логин юзера к имени файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:48 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
skyANA, можно проще при нажатии кнопки отправить на сервер "команду скачать" , сервер , в ответе ajax вернёт путь до файла, в ajax в обработке ответа вставить в тег a путь и програмно нажать на тег Код: javascript 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:53 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
вадя, Добавлю к имени милисекунды времени создания ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:53 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
вадя, авторпри нажатии кнопки отправить на сервер "команду скачать" , сервер , в ответе ajax вернёт путь до файла, В таком случае можно сделать, чтобы сервис передавал в контроллер имя файла, и контроллер возвращал его аяксу? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:56 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
если использовать spring boot, то загуглите ResponseEntity<Resource> копипастну вам сюда метод из нашего контроллера, думаю разберетесь, ну или нет :) ApiOperation это аннотация сваггера, она не обязательна вам. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
отдельно метод getContentDispositionFromReport Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:58 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Код: javascript 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:59 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, Ты же первый файл делал отчета? По урлу /REPORT1 Зачем тебе ajax для второго? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 12:59 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов вадя, авторпри нажатии кнопки отправить на сервер "команду скачать" , сервер , в ответе ajax вернёт путь до файла, В таком случае можно сделать, чтобы сервис передавал в контроллер имя файла, и контроллер возвращал его аяксу?ты на диске не создавал. Откуда он? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:00 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ты на диске не создавал. Откуда он? отсюда Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:02 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов Добавлю к имени милисекунды времени создания ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:04 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
вадя отсюда ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:05 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
PetroNotC Sharp я же говорю, намешал лапшекода. ТС использует JasperReports, а он создаёт файл на диске. у него есть работающий код для html небольшие изменения и файл на скачивание всё просто и логично ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:14 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
вадя, Прочти его прошлый топик ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:18 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Прочти его прошлый топик ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 13:27 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Сделал так. Контроллер: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Сервис: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
JavaScript: Код: javascript 1. 2. 3. 4. 5. 6. 7.
В логе браузера получаю: PK����������7P����������������xl/drawings/drawing1.xml��M �0��ཧ(���.DJ�6�����f���I�D[oo�Ե�|<��7U��9{Q�㸆S^@F�;mx��q����ID�8;���$�6�jա\���,�,e�5L1�R)�'�(��ĩ�\��S�����D�Y�����B-�Q��v���,���?����Թ�i����1�w�d�@ڪ����PK����i�����/���PK����������7P����������������xl/_rels/workbook.xml.rels���j�0�@�� ... Насколько я понимаю, это желаемый мной файл xlsx. Можно ли как-то в браузере вызвать для него диалог сохранения? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 16:15 |
|
JasperReports. Скачивание сгенеренного xlsx файла
|
|||
---|---|---|---|
#18+
Павел Гужанов, я ж тебе код показал!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2020, 16:22 |
|
|
start [/forum/topic.php?fid=59&msg=39917833&tid=2120930]: |
0ms |
get settings: |
7ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
64ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
406ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 819ms |
0 / 0 |