Spring MVC - wyświetlanie zdjęć z dysku w aplikacji

0

Część wszystkim,

Mam problem z którym walczę od kilku godzin, a mianowicie zdjęcia (a raczej wykresy w formacie .PNG), które generuję w aplikacji i przechowuję w folderze resources nie wyświetlaja się po uruchomieniu apki.

Tutaj wizualizacja folderu resources :
screenshot-20190402160423.png

Tutaj widok w HTMLu :

screenshot-20190402160605.png

A tutaj klasa konfiguracyjna MVC :

screenshot-20190402160653.png

Wiem, że nie mogę tak po prostu przesyłać do apki zdjęc z lokalnej maszyny, ale konfigracja MVC miała mi o rzekomo zapewnić, niestety tak się nie dzieje.
W kontrolerze w żaden sposób nie uwzględniam zwrotu pliku PNG.
Wyglda on tak:
screenshot-20190402161013.png

Z góry dziękuję za pomoc :),
Pozdrawiam

0

A nie trzeba tam coś poczarować z konfiguracją jednak? Default chyba tylko /static tak wystawia, więc zobacz czy nie pyknie jak dasz je do static.
Ale rozumiesz oczywiście że jak generujesz je w trakcie działania aplikacji to to nie zadziała?

0
Shalom napisał(a):

A nie trzeba tam coś poczarować z konfiguracją jednak? Default chyba tylko /static tak wystawia, więc zobacz czy nie pyknie jak dasz je do static.
Ale rozumiesz oczywiście że jak generujesz je w trakcie działania aplikacji to to nie zadziała?

Przeniosłem do static i niestety nie pomogło.
Jeśli chodzi o ten konkretny PNG to nie jest on generowany w trakcie działania aplikacji, ale w domyśle chciałem, aby apka wygenerowała PNG i wrzuciła go od razu do HTMLa.
A co do konfiguracji to właśnie dlatego dodaje ten kawałek kodu :
screenshot-20190402163117.png
aby wiedział gdzie szukać statycznych plików

0

Do application.properties dodaj według wzoru ( Nie musisz nic więcej konfigurować w kodzie ) :

spring.webflux.static-path-pattern=/resources/nazwa_folderu/nazwa_kolejnego_folderu/** 

Do tego zasoby statyczne nie są odświeżane przy każdej kompilacji w IntelliJu, więc po każdym dodaniu takiego zasobu, albo musisz zresetować IntelliJa, albo do Maven`a dodać plugin z taką konfiguracją ( Nie jestem pewny czy tak jest. Ja tak miałem i to mi pomogło ) :

<plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <configuration>
                 <addResources>true</addResources>
       </configuration>
</plugin>

Miałem podobny problem i o dziwo ciężko było to znaleźć. Można też to zrobić przez klasę konfiguracyjną, ale to co znajdowałem na interncie było przez Springa uznawane jako depracted. Od razu ostrzegę też, że przy korzystaniu ze Spring Security domyślnie dostęp do zasobów statycznych będzie wymagał autoryzacji ( jak się nie zaloguje użykownik to nie widzi ).

Generalnie jestem świeżakiem i u mnie pliki .png nie były generowane przez apkę, więc nie jestem pewny, czy to zadziała, ale warto spróbować :)

0
DamianSn napisał(a):

Do application.properties dodaj według wzoru ( Nie musisz nic więcej konfigurować w kodzie ) :

spring.webflux.static-path-pattern=/resources/nazwa_folderu/nazwa_kolejnego_folderu/** 

Do tego zasoby statyczne nie są odświeżane przy każdej kompilacji w IntelliJu, więc po każdym dodaniu takiego zasobu, albo musisz zresetować IntelliJa, albo do Maven`a dodać plugin z taką konfiguracją ( Nie jestem pewny czy tak jest. Ja tak miałem i to mi pomogło ) :

<plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <configuration>
                 <addResources>true</addResources>
       </configuration>
</plugin>

Miałem podobny problem i o dziwo ciężko było to znaleźć. Można też to zrobić przez klasę konfiguracyjną, ale to co znajdowałem na interncie było przez Springa uznawane jako depracted. Od razu ostrzegę też, że przy korzystaniu ze Spring Security domyślnie dostęp do zasobów statycznych będzie wymagał autoryzacji ( jak się nie zaloguje użykownik to nie widzi ).

Generalnie jestem świeżakiem i u mnie pliki .png nie były generowane przez apkę, więc nie jestem pewny, czy to zadziała, ale warto spróbować :)

Niestety ta properka nie działa :/

0

Niestety ta properka nie działa :/

Szkoda. Tak na upewnienie powiem ci jak jest dokładnie u mnie, bo też się z tym męczyłem i to zdecydowanie za długo.

  1. W application.properites umieszczam :
spring.webflux.static-path-pattern=/resources/static/**
  1. Obrazy w formacie png umieszczam w folderze images o ścieżce :
 resources/static/images/ 
  1. Na froncie poprzez Thymeleafa umieszczam zdjęcia za pomocą tagu :
<img th:src="@{/images/nazwa_obrazku.png}" width="22" height="22"/>

Jakby coś to tutaj masz mój projekcik gdzie to mam : https://github.com/DSniatecki/YourFleetManager . Chociaż powiem ci, że generalnie jak o tym myślę, to raczej nie ma prawa działać to w taki sposób jak to sobie wymyśliłeś. Widoczne będą raczej tylko te co będą tam w czasie kompilacji / uruchomienia aplikacji.

1

Zrób jak człowiek front w Vue i tam to wyświetl.

0
slayer9 napisał(a):

Zrób jak człowiek front w Vue i tam to wyświetl.

Nigdy nie korzystałem. Do frontu używam Bootstrapa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1