powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC, чтение pdf файла из базы данных
25 сообщений из 163, страница 4 из 7
Spring MVC, чтение pdf файла из базы данных
    #39900210
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берешь пример SpringMan и меняешь место, где создается InputStream, тебе его нужно взять из базы.


SpringMan
Не надо темплейта никакого. Надо чтобы браузер просто скачал файл. В stackoverflow первая ссылка (по-хорошему еще надо добавить Content-Type):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      Book book = ... // Hibernate query? Use fileName as a key.
      InputStream is = new ByteArrayInputStream(book.getPdf());
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }

}


...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900211
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
что делать дальше то?
выше глаза разуй.
Слово test в выходной поток.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900215
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
apb12

неужели в mvc нет возможности это сделать?


Этот вариант чем не подходит?

SpringMan
Не надо темплейта никакого. Надо чтобы браузер просто скачал файл. В stackoverflow первая ссылка (по-хорошему еще надо добавить Content-Type):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      // get your file as InputStream
      InputStream is = ...;
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }

}


Далее файл может скачаться или отобразиться просто в браузере. По большому счету это решает браузер, что ему сделать. Но это поведение можно регулировать заголовком Content-Disposition.


он подхоит я не пойму как мне отобразить с помощью него пдф файл на странице
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900216
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer,
Не отвлекай его)))
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900218
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
apb12
к ним еще и дескриптор
боже, какая некомпетентность. Сервлету не нужен конфиг.

может еще и томкат не нужен?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900226
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
может еще и томкат не нужен?
сервлет сделал?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900227
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12
он подхоит я не пойму как мне отобразить с помощью него пдф файл на странице

У тебя какое-то глобальное недопонимание происходящего.
И сервлет и спринговый код сделает одно и то же: по ссылке будет возвращать набор байт файла + хттп загловки.
Дальше тебе надо: или чтобы pdf.js взял эту ссылку и нарисовал пдф-ку, или чтобы сам браузер взял эти ссылку и нарисовал пдф-ку.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идет уже 4-я страница...
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900232
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
У тебя какое-то глобальное недопонимание происходящего.
это последствия экстерном из второго в 9 класс на спринг.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900242
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
apb12
он подхоит я не пойму как мне отобразить с помощью него пдф файл на странице

У тебя какое-то глобально недопонимание происходящего.
И сервлет и спринговый код сделает одно и то же: по ссылке будет возвращать набор байт файла + хттп загловки.
Дальше тебе надо: или чтобы pdf.js взял эту ссылку и нарисовал пдф-ку, или чтобы сам браузер взял эти ссылку и нарисовал пдф-ку.

да все я понимаю) я с них начинал но уже полгода на mvc
там все просто есть модель в нее кладешь объект и показываешь
понятно что под капотом там теже сервлеты
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900246
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
да все я понимаю)
только никто не верит.
Продолжай.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900250
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот тебе пример, который просто делает скачивание файла. Дальше эту ссылку используешь на фронте. На сервлетах будет точно такой же смысл. Запусти этот код и попробуй просто скачать файл по http://localhost:8080/my_service/files/my_pdf.pdf или что у тебя там вместо file_name
fixxer

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      Book book = ... // Hibernate query? Use fileName as a key.
      InputStream is = new ByteArrayInputStream(book.getPdf());
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }

}


...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900266
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве нельзя задекларировать метод

Код: java
1.
2.
3.
4.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public @ResponseBody byte[]  getFile(...) {
   ...
}



чтобы умный Спринг понял, что byte[] - это для ответа?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900270
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
Ну вот тебе пример, который просто делает скачивание файла. Дальше эту ссылку используешь на фронте. На сервлетах будет точно такой же смысл. Запусти этот код и попробуй просто скачать файл по http://localhost:8080/my_service/files/my_pdf.pdf или что у тебя там вместо file_name
fixxer

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      Book book = ... // Hibernate query? Use fileName as a key.
      InputStream is = new ByteArrayInputStream(book.getPdf());
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }

}



попробовал -возвращает в браузер вот такое

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
%PDF-1.4
%âãÏÓ
1 0 obj
<</Type /Page
/Parent 2 0 R
/MediaBox [ 0 0 595.000 841.000 ]
/Resources <</XObject 3 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]>>/Contents [ 4 0 R ]
/Rotate 0
>>
endobj
5 0 obj
<</Type /XObject /Subtype /Image
/Name /JI1Obj1
/Width 1240 /Height 1754
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter [ /FlateDecode /DCTDecode ]
/Length 6 0 R>>
stream
x&#339;&#237;=	\L&#219;&#255;w&#353;R<[™¬’&„6&#235;c&#242;&#732;4&#245;’J&#219;X&#178;¤U&#161;&#205;+/S–‡!iQD&#202;4Q©,•&#144;&#143;
&#165;}QJ)-&#180;j&#157;&#255;&#189;w&#238;&#157;&#185;wo&#249;=&#222;{&#191;&#223;z&#376;&#175;&#207;™s&#190;&#231;&#339;&#239;Y&#190;&#231;»&#157;s§&#339;&#243;««M&#211;&#65533;&#255;8&#402;€§X
H&#141;&#376;(7‘4]n&#178;&#220;¬™&#211;g/\&#175;±p&#222;&#188;…&#219;µu—­wµ&#246;&#252;&#201;&#217;z&#143;“&#247;&#233;&#219;&#188;&#143;%0&#157;&#246;DT°&#238;?z&#382;&#255;&#252;&#231;&#208;·m&#175;&#179;?&#222;~&#250;<j„&#240;—&#201;&#65533;¤&#165;†U&#710;—	31iQ&#353;&#192;y&#200;&#65533;A‚&#65533;&#255;&#200;A&#338;(.1LRj&#248;&#710;&#239;@„&#228;±€&#129;H'JH&#710;‹&#402;&#165;^`9 .-!3Cu&#213;°q†&#219;$g&#238;%©&#249;&#248;_’R&#248;&#225;&#198;Y&#163;‚&#143;&#179;&#212;·;>b&#252;„‰“&+&#206;V"+&#207;&#209;&#208;\&#180;x&#201;&#210;e«&#215;Pµ&#215;&#234;&#208;t&#141;7&#732;&#732;&#353;™[&#208;wX&#237;&#180;¶±µ&#179;wqus&#223;&#247;“‡&#231;&#161;&#195;G~9z&#236;83 0&#232;Lp&#200;&#217;s&#161;¬Hv&#212;&#229;+&#209;1±7“’o&#165;&#220;&#190;s&#247;&#225;&#175;&#143;gfe?yZXT\RZV&#254;&#162;&#226;&#205;&#219;&#353;&#218;wu&#245;&#239;?µµwtvu&#238;&#233;…&#198;E&#65533;&#710;&#244;O&#232;&#184;¤&#193;q‰‰‹&#197;%&#161;q&#196;&#246;A&#210;&#226;3T‡&#201;¬2”&#220;¶w&#220;L5)&#210;&#254;—n<® n&#244;Qv»s&#193;&#710;&#241;&#179;4&#222;(~‚†&#143;&#236;&#143;
&#236;&#224;42&#222;&#192;&#248;&#227;&#170;&#65533;F	&#224;&#226;&#165;
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900273
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Разве нельзя задекларировать метод

Код: java
1.
2.
3.
4.
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public @ResponseBody byte[]  getFile(...) {
   ...
}



чтобы умный Спринг понял, что byte[] - это для ответа?

хорошая мысль)
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900274
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Баелдунг об этом пишет.

https://www.baeldung.com/spring-controller-return-image-file

применительно к картинкам и к RAW. Но какая в жопу разница.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900275
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
facepalm.

Это же то, что надо. Тот самый PDF. Content-Type только указать правильно.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900280
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak
чтобы умный Спринг понял, что byte[] - это для ответа?

Обычно еще всякие header-ы надо добавлять. Способов еще можно придумать - пока это неважно наверное. Пока это самый старый и надежный )

apb12

попробовал - возвращает в браузер вот такое

Попробуй добавить:
авторContent-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"

Этот по идее, если открыть сразу в браузере надо:
авторContent-Disposition: inline
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900287
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
попробовал -возвращает в браузер вот такое
не в отладчик, а в браузер?
Миме тип в заголовок.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бро тебе наверное надо сделать 2 сервлетика.

Один отдает линку вроде этой

Код: html
1.
<embed src="pdfShower/FuckenPdf.pdf" width="600" height="500" alt="pdf" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html">



А второй pdfShower просто извлекает из базы документ
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900342
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
facepalm.

Это же то, что надо. Тот самый PDF. Content-Type только указать правильно.

я думаю это стрим вернулся ,а чтобы собрать пдф нужен массив байт)
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900344
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Бро тебе наверное надо сделать 2 сервлетика.

Один отдает линку вроде этой

Код: html
1.
<embed src="pdfShower/FuckenPdf.pdf" width="600" height="500" alt="pdf" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html">



А второй pdfShower просто извлекает из базы документ

щас будем делать)
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900345
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С богом.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900346
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
Alexander A. Sak
чтобы умный Спринг понял, что byte[] - это для ответа?

Обычно еще всякие header-ы надо добавлять. Способов еще можно придумать - пока это неважно наверное. Пока это самый старый и надежный )


С явным HttpServletRespnse и в плане использования памяти получше будет. Я тоже так делаю когда надо просто байты вернуть.

Но вдруг у людей какие религиозные предубеждения против Servlet API. Или тесты, например, не рассчитаны на такие объекты, или просто внутренние правила.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39900348
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда полезно отбросить программирование и просто изучить как работает Apache HTTP Server.
...
Рейтинг: 0 / 0
25 сообщений из 163, страница 4 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC, чтение pdf файла из базы данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]