powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC, чтение pdf файла из базы данных
25 сообщений из 163, страница 1 из 7
Spring MVC, чтение pdf файла из базы данных
    #39899835
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно вопрос в следующем
имею в базе данных поле с типом bytea (массив байт)-там лежит преобразованый в байт массив pdf файл
что нужно сдедать -достать его оттуда ,преобразовать в pdf и прочитать

сущность ,которая представляет собой имя и собственно сам байт массив

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Entity(name = "bk")
@Data
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private byte[]pdf;


}



беру pdf файл c локальной машины и кладу в базу

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    @PostMapping
    public String addingBook(@PathParam("name")String name,
                             @PathParam("url")String url) throws IOException {
        Book book=new Book();
        File file = new File(url);
        FileInputStream fis = new FileInputStream(file);
        byte [] data = new byte[(int)file.length()];
        fis.read(data);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        data = bos.toByteArray();
        book.setName(name);
        book.setPdf(data);
        bookRepo.save(book);
        return "redirect:/book";
        
    }



достаю и преобразовываю

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@PostMapping("/read")
    public String readBook() throws IOException {
        File file = new File("book.pdf");
        Book b = bookRepo.findById(14L).get();
        FileOutputStream fo = new FileOutputStream(file);
        fo.write(b.getPdf());
        return "redirect:/book";
    }



первая проблема в том что вновь созданный файл не читаем ,ни один пдф инструмент не может его открыть
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899841
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12,
По архитектуре не правильно. Не надо его читать.
Jpeg положил и взял, работает?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899847
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
...
ByteArrayOutputStream bos = new ByteArrayOutputStream();
data = bos.toByteArray();
...
book.setPdf(data);
...


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

пс.пофиксил запись чтение теперь нормально работают

проблема была в записи,переделал метод pdf->>byte[]

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
   @PostMapping
    public String addingBook(@PathParam("name")String name,
                             @PathParam("url")String url) throws IOException {
        Book book=new Book();
        File file = new File(url);
        FileInputStream fis = new FileInputStream(file);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] buf = new byte[Integer.MAX_VALUE];
        try {
            for (int readNum; (readNum = fis.read(buf)) != -1;) {
                bos.write(buf, 0, readNum); 
            }
        } catch (IOException ex) {
            System.out.println("ERROR!");
        }
        byte[] bytes = bos.toByteArray();
        book.setName(name);
        book.setPdf(bytes);
        bookRepo.save(book);
        return "redirect:/book";
    }
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899853
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan,да прошелся дебагом пустота была,цикл сделал,все заработало
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899860
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь самый главный вопрос

У меня в базе много пдф файлов
юзер выбирает нужный ему файл и он подсасывается с базы на локальную машину и вот тут вопрос возникает
у меня сейчас этот пдф файл кладется в корень проекта-отсюда первый вопрос ,куда будет класться pdf file на продакшене и как это дело прописать чтобы я мог отображать нормально этот пдф ведь при отображении пдф файла я использую конструкцию вида

Код: html
1.
<embed src="static/book.pdf" width="850" height="900" type='application/pdf'>



тоесть если сейчас при проекте ,который разверт в JDK все прекрасно - я указал путь -куда должен сохраняться файл с базы и спокойно его читаю

но как быть когда проект собран и у пользователя лишь веб интерфейс?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899885
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
всмысле jpeg ?там же книги а не изображение
ты как всегда. Если байты положил в блоб байт в байт, то причем тут pdf?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899887
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
указал путь -куда должен сохраняться файл с базы и спокойно его читаю
не понял. Путь файловой системы указал?
Сервлет+REST.
Всё.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут ответ на вопрос. https://stackoverflow.com/questions/42393211/how-can-i-serve-static-html-from-spring-boot

Пишут про html - но суть таже самая. Как сконфигурировать SpringBoot(Tomcat/Jetty) для обслуживания
обычных статичных файлов.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899899
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
А теперь самый главный вопрос

но как быть когда проект собран и у пользователя лишь веб интерфейс?


Код: java
1.
File pdfFile = File.createTempFile(filename, ".pdf");



Создаться файл со случайным именем во временной директории системы.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899909
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
У него бд или нет?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899911
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Создаться файл со случайным именем во временной директории системы.
а зачем, если сервлет без него отдаст?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
У него бд или нет?

У него БД. Но он зачем-то перекладывает это в файловую систему. Наверное кешировать будет. Или не будет.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899914
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
Код: html
1.
<embed src="static/book.pdf"

либо у тебя файлы, тогда static это псевдоним а не папка. Переменная.
Либо бд, тогда это имя сервлета.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899917
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но он зачем-то
да. Никто не знает зачем.
Я вспомнил, он сервлеты не любит. Спринг любит.
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899926
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
apb12
указал путь -куда должен сохраняться файл с базы и спокойно его читаю
не понял. Путь файловой системы указал?
Сервлет+REST.
Всё.

смотри в базе лежит масив байт
пользователь дергает рест сервис
из базы выгружается этот байт массив
вопрос что дальше - я должен отобразить этот массив в виде пдф файла в браузере

как ты знаешь браузер не умеет преобразоывать байты в пдф,это нужно сделать руками и это делается лишь одним способом - создается пдф файл - вот и вопрос где его хранить ,как найти к нему путь ( я так понимаю когда приложение будет развернуто на сервере клиента - эти файлы будут создаваться у него на сервере) и тут еще сразу вопрос а если этих пользователей тысячи?
это ж рано или поздно ляжет сервер под натиском спама пдф файлами

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

У него БД. Но он зачем-то перекладывает это в файловую систему. Наверное кешировать будет. Или не будет.

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

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


apb12
как ты знаешь браузер не умеет преобразоывать байты в пдф
что?

тоесть ты хочешь сказать если я из базы возьму байт массив и отдам это на страницу - то получу на странице pdf?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899930
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12,
А байты в jpeg умеет?
А винда умеет байты в bmp/doc/...?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899932
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
на страницу - то получу на странице pdf?
заголовок правильно напиши. И получит))
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899936
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
PetroNotC Sharp
пропущено...
не понял. Путь файловой системы указал?
Сервлет+REST.
Всё.

смотри в базе лежит масив байт
пользователь дергает рест сервис
из базы выгружается этот байт массив
вопрос что дальше - я должен отобразить этот массив в виде пдф файла в браузере

как ты знаешь браузер не умеет преобразоывать байты в пдф,это нужно сделать руками и это делается лишь одним способом - создается пдф файл - вот и вопрос где его хранить ,как найти к нему путь ( я так понимаю когда приложение будет развернуто на сервере клиента - эти файлы будут создаваться у него на сервере) и тут еще сразу вопрос а если этих пользователей тысячи?
это ж рано или поздно ляжет сервер под натиском спама пдф файлами

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

понял,я про это не знал,думал браузеру нужен файл обязательно
вопрос в том что я же в шаблоне указывал как
Код: html
1.
<embed src="static/book.pdf" width="850" height="900" type='application/pdf'>


теперь так не получится же
тоесть теперь я беру
Код: java
1.
2.
3.
4.
5.
6.
7.
@PostMapping("/read")
    public String readBook(Model model) throws IOException {
        
        Model.addAtrribute("pdf",bookRepo.findById(id).get());
      
        return "redirect:/book";
    }


и что дальше делать в таком случае-лежит у меня в модели масси байтовый,как его отобразить в браузере?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899951
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12
Код: java
1.
PostMapping("/read")


Заменить на /static
Теперь вбей в урл любую белиберду после /static/опчвполдо.pdf
Что увидим?
Get был?
Поток отдал?
...
Рейтинг: 0 / 0
Spring MVC, чтение pdf файла из базы данных
    #39899954
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apb12,
Крайний вариант, js заплату поправить и отдать клиенту.
Но и без этого должно работать.
...
Рейтинг: 0 / 0
25 сообщений из 163, страница 1 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC, чтение pdf файла из базы данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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