Moja obecna realizacja wygląda następująco:

Przechowuję obraz w danych binarnych w bazie danych. Następnie ładuję go i wysyłam jako dane Base64 w odpowiedzi HTTP.

API:

    @Lob
    @Column(length = 16777215)
    private byte[] image;

Następnie załaduj go w interfejsie użytkownika <img ng-src="data:image/png;base64, {{product.image}}">

W przypadku niektórych obrazów odpowiedź HTTP jest ogromna. Działa dobrze w przypadku kilku obrazów, ale powiedzmy, że chcę wyświetlić 100 obrazów.

Czy to właściwy sposób, aby zrobić to szybko i dobrze?

2
Tiago Silva 24 marzec 2020, 14:02

2 odpowiedzi

Najlepsza odpowiedź

Możesz po prostu spróbować przekazać adres URL do interfejsu API w węźle obrazu. Na przykład:

<img ng-src="https://api.myhost.com/product/5646/image" />

W większości przypadków powinno działać dobrze.

1
pwkc 24 marzec 2020, 11:06

Nie wierzę, że można to obejść, po prostu przenosisz rozmiar obrazu do HTML.

Odradzałbym przechowywanie obrazów w bazie danych, właściwym sposobem byłoby przechowywanie obrazów w systemie plików i przechowywanie adresu URL w bazie danych.

To powinno sprawić, że odpowiedź HTTP będzie niewielka, a kod HTML będzie się szybko ładował.

0
KeironLowe 24 marzec 2020, 11:11