Ich benutze Federmvc mit Thymoleaf, um ein Bild auf den Server hochzuladen und es nach dem Absenden des Formulars in einer separaten Seite "Ergebnis" anzuzeigen.uploaded Bild wird nicht angezeigt, bis ich die Seite aktualisieren Spring Mvc
Das Problem ist, das Bild wird nicht angezeigt, bis ich Ressourcen-Ordner "Ressourcen/statische/Bilder" in Spring Tool Suite aktualisieren und aktualisieren Sie die Seite. I Eclipse-Workspace-Optionen modifiziert automatisch neu geladen und die ide Teil gelöst, sondern müssen noch die Ergebnisseite aktualisieren das Bild
angezeigtDies ist der Controller-Code erhalten
@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";
}
und dies ist der Ansicht Code
<img th:src="@{'images/'+${contentEntity.imgUrl}}" class="image-responsive thumbnail" />
Der Server liefert keine Bilder von 'src/main/resources /'. Es bedient sie von einer Webanwendung, die aus diesem Verzeichnis (und anderen) erstellt wurde. Betrachten Sie die Webanwendung als eine große WAR-Datei, die Sie zur Laufzeit nicht ändern können (weil das genau so sein sollte). Betrachten Sie die hochgeladenen Bilder als Daten, die irgendwo auf dem Produktions-Webserver oder in einer Datenbank gespeichert sind **, da sie das sind. Sie benötigen ein Servlet oder einen Controller, der eine Image-ID erstellt, die entsprechende Datei oder den Datenbank-Blob liest und die Daten mit dem entsprechenden Inhaltstyp an den Browser zurücksendet. –