Sto usando mvc di primavera con thymeleaf per caricare un'immagine sul server e visualizzarla dopo aver inviato il modulo in una pagina separata "risultato".l'immagine caricata non viene visualizzata fino a quando non aggiorno la pagina Spring Mvc
il problema è che l'immagine non viene visualizzata fino a quando non riesco ad aggiornare la cartella risorse "static/images/images" in Spring Tool Suite e quindi aggiornare la pagina. Ho modificato le opzioni di lavoro di Eclipse per aggiornare automaticamente e la parte ide risolto, ma ancora bisogno di aggiornare la pagina dei risultati per ottenere l'immagine visualizzata
Questo è il codice di controllo
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String contentSubmit(@Valid @ModelAttribute ContentEntity cm, BindingResult result,
@RequestParam("file") MultipartFile file, Model model) {
if (!file.isEmpty()) {
try {
cm.setImgUrl(file.getOriginalFilename());
byte[] bytes = file.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("src/main/resources/static/images/"+cm.getImgUrl())));
stream.write(bytes);
stream.close();
} catch (Exception e) {
//return error page
}
}
if (result.hasErrors()) {
return "cms";
}
contentDao.addContent(cm);
return "view";
}
e questo è il codice della vista
<img th:src="@{'images/'+${contentEntity.imgUrl}}" class="image-responsive thumbnail" />
Il server non pubblica le immagini da 'src/main/resources /'. Serve da un'applicazione web creata da questa directory (e altre). Considera l'applicazione web come un grosso file di guerra che non puoi modificare in fase di esecuzione (perché è quello che dovrebbe essere). Considera le immagini caricate come dati, memorizzati da qualche parte ** fuori dall'applicazione ** sul server web di produzione o in un database, perché è quello che sono. È necessario un servlet o un controller che acquisisca un ID immagine, legga il file o il blob del database corrispondente e restituisca i dati al browser, con il tipo di contenuto appropriato. –