Java 在我刷新Spring Mvc页面之前,上传的图像不会显示

Java 在我刷新Spring Mvc页面之前,上传的图像不会显示,java,eclipse,spring-mvc,image-uploading,thymeleaf,Java,Eclipse,Spring Mvc,Image Uploading,Thymeleaf,我使用SpringMVC和thymeleaf将图像上传到服务器,并在单独的“结果”页面中提交表单后显示它 问题是,在我刷新Spring工具套件中的resources文件夹“resources/static/images”,然后刷新页面之前,图像不会显示。 我修改了eclipse工作区选项以自动刷新,解决了ide部分,但仍然需要刷新结果页面以显示图像 这是控制器代码 @RequestMapping(value = "/save", method = RequestMethod.POST) publ

我使用SpringMVC和thymeleaf将图像上传到服务器,并在单独的“结果”页面中提交表单后显示它

问题是,在我刷新Spring工具套件中的resources文件夹“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/resources/…”目录中创建一个资源(图像文件)。但是,您的服务器似乎是来自不同目录(比如target/**或bin/**)的serverig映像。因此,当您刷新资源目录时,STS会检测到最近创建的新文件,然后将该文件复制到目标目录下

eclipse中有一个选项“本机钩子或轮询”,它不断监视资源的更改(即使更改是在STS/eclipse外部进行的)。一旦检测到更改,资源将自动刷新

您可能希望通过以下方式设置此选项:首选项>常规>工作空间>“使用本机挂钩或轮询刷新”


希望这有帮助。

我解决这个问题的另一种方法是,不要只将图像存储在resources/static/images中,您还可以将它们保存在target/classes/static/images中,服务器将能够看到新添加的图像而无需刷新。

服务器不提供来自
src/main/resources/
的图像。它通过从这个目录(和其他目录)构建的web应用程序为它们提供服务。将Web应用程序视为一个大的战争文件,不能在运行时修改(因为它应该是这样)。将上传的图像视为数据,存储在生产Web服务器或数据库中的应用程序的某个地方,因为这就是它们。您需要一个servlet或控制器,它获取图像ID,读取相应的文件或数据库blob,并将数据发送回浏览器,以及相应的内容类型。我通过这篇文章解决了这个问题。所以现在我想知道这是否也会发生在服务器(生产状态)中,或者这只是本地环境(开发状态)的问题?保存映像/文件的过程是否安全?是否有可能在服务器(生产状态)中也会发生这种情况,或者这只是本地环境(开发状态)的问题?保存图像/文件的过程是否安全?