Получить BLOB из базы данных с изображением, используя Spring MVC и Thymeleaf - PullRequest
0 голосов
/ 21 января 2019

У меня есть некоторые проблемы с представлением изображения на веб-интерфейсе с использованием Spring MVC с Hibernate для извлечения изображения, хранящегося в BLOB-объекте в базе данных.

Объект:

@Lob
@Column(length = 100000)
private byte[] foto;

public byte[] getFoto() {
    return foto;
}

public void setFoto(byte[] foto) {
    this.foto = foto;
}

Контроллер:

@GetMapping("/view")
    public ModelMap viewVehicle(@RequestParam(value = "id", required = false) Vehicle vehicle, Model model) {
        if (vehicle == null) {
            vehicle = new Vehicle();
        }

        return new ModelMap("vehicle", vehicle);
    }

HTML:

<img th:src="*{'data:image/png;base64,'+ foto}" />

Но представление работает без ошибок, но изображение не отображается.

Я экспериментировал со многими решениями, которые я нашел в Интернете, но ничегосработало.

Есть какие-нибудь соображения, чтобы помочь мне разрешить эту ситуацию?

Привет

1 Ответ

0 голосов
/ 25 января 2019

Пожалуйста, попробуйте преобразовать данные изображения byte[] в строку в кодировке base64, используя следующий код:

Вы можете сделать это в Entity, определив новое свойство, или вы можете сделать это в Controller перед возвратом вашегоModelMap.

String base64EncodedImage = Base64.encodeBase64String(foto);

Затем вы можете ссылаться на эту новую переменную в своем представлении:

<img th:src="*{'data:image/png;base64,'+ base64EncodedImage}" />

Обратите внимание, что для использования метода Base64.encodeBase64String() вам необходимо import org.apache.commons.codec.binary.Base64

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...