做完图片上传之后,上传图片发现页面不能立刻显示,本以为图片没有上传成功,但当我在文件夹和数据库都没发现异常,然后我便重启了服务器,再次访问发现竟然可以了。不重启它就不能显示,很奇怪。

原因

通过百度,在大佬博客里找到了答案。这是因为对服务器的保护措施导致的,服务器不能对外部暴露真实的资源路径,需要配置虚拟路径映射访问。

解决方案

重新创建一个类。在resources/static文件下添加一个静态资源文件夹upload。这个类要做的事情就是将upload文件所在的真实路径,映射到项目路径下。这样就不需要重新部署项目,上传成功后图片就可以显示了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.zdong.dream.config;

import cn.hutool.core.lang.Console;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class UploadConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(@NotNull ResourceHandlerRegistry registry) {
//获取文件的真实路径
String path = System.getProperty("user.dir")+"/src/main/resources/static/upload/";
//uploadFile对应resource下工程目录
registry.addResourceHandler("/upload/**").addResourceLocations("file:"+path);

// 目录2
String path2 = System.getProperty("user.dir")+"/src/main/resources/static/images/";
//uploadFile对应resource下工程目录
registry.addResourceHandler("/images/**").addResourceLocations("file:"+path2);

}
}