Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
1

Передать картинку с back-end to front-end

11.05.2017, 19:05. Просмотров 918. Ответов 7
Метки нет (Все метки)

пытаюсь с сервера передать и отрисовать картинку на front:

читаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    public List<Car> getCars() {
        List<Car> cars = (List<Car>) carDao.findAll();
        cars.stream()
                .forEach((m) -> {
                    try {
                        m.setCarImage(ConverterUtil.extractBytesFromImage(m.getImagePath()));
                    } catch (IOException e) {
                        System.out.println(e.getMessage());
                    }
                });
        return cars;
    }
Java
1
2
3
4
5
6
7
8
9
    public static byte[] extractBytesFromImage(String path) throws IOException {
        File img = new File(path);
        System.out.println(new File(path).getAbsolutePath());
        BufferedImage bufferedImage = ImageIO.read(img);
 
        WritableRaster raster = bufferedImage.getRaster();
        DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
        return data.getData();
    }
на front отправляются byte[] нормально
потом пытаюсь отрисовать картинку:
Javascript
1
$('#carImg№' + obj.carId).attr('src', 'data:image/png;base64,' + obj.carImage);
в запросе вместо байт приходит:
Кликните здесь для просмотра всего текста
AP///wD///8A////AP///wD///8A

в итоге картинка не отрисовывается, подскажите плз в чем проблема
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2017, 19:05
Ответы с готовыми решениями:

Скачать файл(видео,картинку) с компьютера и передать на сайт. Controller. Spring
Не удалось исправить @RequestMapping(value = &quot;/reminders/video&quot;, method =...

Front end vs Back end
Доброго времени суток. На данный момент изучаю бек енд, знаю основы php,...

Front-end и Back-end: что круче, что луче, где больше?
вопрос: какая разница зарплаты в Senior Front-end'a и Senior Back-end'a, в%....

Python для front и back-end
Всем привет! Достаточно давно занимаюсь созданием сайтов, перепробовал много...

Frond-End Excel и back-end Access
Для меня такая архитектура извращение, но Родина сказала надо и я сказал -...

7
xoraxax
1343 / 1285 / 378
Регистрация: 05.07.2013
Сообщений: 6,174
Завершенные тесты: 1
11.05.2017, 20:33 2
http://www.baeldung.com/spring-mvc-image-media-data
1
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
12.05.2017, 01:54  [ТС] 3
xoraxax, мне кажется, что это не совсем то, что мне нужно, мне же все-таки нужно передать не только картинку ... + там не показано как обрабать результат запроса на фронте
0
xoraxax
1343 / 1285 / 378
Регистрация: 05.07.2013
Сообщений: 6,174
Завершенные тесты: 1
12.05.2017, 01:57 4
А мне кажется, что как то невнимательно читаешь
1
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
12.05.2017, 13:18  [ТС] 5
xoraxax, я так понимаю, что в моем случае нужно использовать ResponseEntity так ??
0
LeX
344 / 343 / 107
Регистрация: 30.06.2010
Сообщений: 1,338
12.05.2017, 20:57 6
Лучший ответ Сообщение было отмечено Fene4ka_ как решение

Решение

Fene4ka_, если ты рендеришь страницу в зависимости от объекта из списка, который пришел с сервера, то тебе действительно лучше передать на клиент base64 представление картинки, поэтому ты правильно сделал что у dto поле carImage имеет тип byte[], jackson автоматом его сконвертит в base64. проблема в другом - как ты конвертишь в байты, тебе надо просто считать файл в массив байтов, как в пункте 3.2 по ссылке, что кинул xoraxax
1
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
12.05.2017, 22:39  [ТС] 7
xoraxax, я так понимаю, что в моем случае нужно использовать ResponseEntity так ??LeX,
ок, попробую, спасибо
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
14.05.2017, 03:37  [ТС] 8
переписал метод считывания байтов и все заработало, спасибо
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static byte[] extractBytesFromImage(String path) throws IOException {
        File imgPath = new File(path);
        BufferedImage bufferedImage = ImageIO.read(imgPath);
 
        ByteOutputStream bos = null;
        try {
            bos = new ByteOutputStream();
            ImageIO.write(bufferedImage, "png", bos);
        } finally {
            try {
                bos.close();
            } catch (Exception e) {
            }
        }
 
        return bos == null ? null : bos.getBytes();
    }
0
14.05.2017, 03:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2017, 03:37

Back-end и java
Здравствуйте! У меня есть вопрос. Можно ли писать на java back-end, которые...

Front-end разработка
Всем привет,хочу стать front-end разработчиком и у меня появился...

Back end разработка java
Всем привет. Хотел узнать какими навыками должен обладать такой программист ?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru