6
我使用春天mvc與thymeleaf上傳圖像到服務器,並提交表單在一個單獨的頁面「結果」後顯示它。上傳的圖像不會顯示,直到我刷新頁面春季Mvc
問題是圖像不顯示,直到我在Spring Tool Suite中刷新資源文件夾「resources/static/images」,然後刷新頁面。 我修改Eclipse工作區選項自動刷新和IDE部分解決,但仍然需要刷新結果頁面以獲取圖像顯示
這是控制器代碼
@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";
}
,這是視圖代碼
<img th:src="@{'images/'+${contentEntity.imgUrl}}" class="image-responsive thumbnail" />
服務器不提供'src/main/resources /'中的圖像。它通過從該目錄(和其他)構建的Web應用程序提供服務。考慮將Web應用程序作爲一個大型的war文件,在運行時無法修改(因爲這應該是)。考慮將上傳的圖像作爲數據存儲在生產Web服務器上或應用程序數據庫中的應用程序**以外的地方,因爲這就是它們的原因。您需要一個servlet或控制器來獲取映像標識,讀取相應的文件或數據庫blob,並將數據以適當的內容類型發送回瀏覽器。 –