我正在使用带有百万美元的spring 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" />
答案 0 :(得分:4)
您在&#34; src / resources /..."中实际创建资源(图像文件);目录。但是,您的服务器似乎是来自不同目录的serverig图像(例如target / **或bin / **)。因此,当您刷新资源目录时,STS会检测最近创建的新文件,然后将该文件复制到目标目录下。
eclipse中有一个选项&#34;原生钩子或轮询&#34;它不断地监视资源的变化(即使是在STS / eclipse外部进行的)。一旦检测到更改,资源就会自动刷新。
您可能需要通过以下方式设置此选项:首选项&gt;一般&gt;工作区&gt; &#34;使用本机挂钩刷新或轮询&#34;
希望这有帮助。
答案 1 :(得分:0)
我解决的另一种方法是,除了将图像仅存储在资源/静态/图像中,您还可以将它们保存在目标/类/静态/图像中,服务器将能够在不刷新的情况下看到新添加的图像。>