1.问题描述:
系统采用的架构,是采用SpringBoot+SSM+SpringSecurity+JWT
前端是小程序端或者PC的前端 Vue。当在前端上传图片之后,上传到指定的idea后端里面(这个版本没有使用云存储,是存储在本地文件里面)
如图所示:
图片在/resources/static/upload 下面已经上传成功,但是在target里面没有,需要刷新idea或者重起之后才能有。由于target没有图片,当我们
访问 http://ip地址:端口号/static/upload/sdfasdfas1231231.png 这种图片就访问不到的。
2. 出现原因
这样导致的原理是服务器的保护措施导致的,服务器不能对外部暴露真实的资源路径,需要配置虚拟路径映射访问
3 解决办法
解释: /static/upload/** 映射到 XXXXXX\\src\\main\\resources\\static\\upload\\这个路径下面。访问
http://static/upload/123134243243.png 相当于访问 XXXXXX\\src\\main\\resources\\static\\upload\123134243243.png
所有能够访问到图片。
具体的代码如下:
@Configuration
public class FileUploadConfig implements WebMvcConfigurer {
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//获取文件的真实路径
String path = System.getProperty("user.dir")+"\\src\\main\\resources\\static\\upload\\";
//添加映射
registry.addResourceHandler("/static/upload/**").addResourceLocations("file:"+path);
}
}