添加外部静态资源目录
springboot 默认的静态资源目录,都在 jar包内,在有些场景并不适用,比如:
电商平台,商家上传商品的图片,该图片不能保存在 jar包中,只能保存到外部路径,如:
d:\pic目录在买家浏览页面时,还能够正常显示该图片
所以,在 上传文件、下载文件 时,就需要外部的静态资源目录
配置文件
application.properties
# 静态资源目录,最后要以 / 结尾
file.upload=D:/pic/
# 静态资源url,最后要以 / 结尾
file.url=/upload/
application.yml
file:
# 静态资源目录,最后要以 / 结尾
upload: D:/pic/
# 静态资源url,最后要以 / 结尾
url: /upload/
java 代码
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${file.upload}")
private String upload;
@Value("${file.url}")
private String url;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(url+"**").addResourceLocations("file:"+upload);
}
}
注意:
**表示upload路径(url)下的资源,以及 子路径 下的资源file:开头,表示磁盘路径, 以/结尾
作用
访问:http://ip:port/context/upload/1.jpg 时,就会去 d:/pic 目录下找 1.jpg
测试1
放图片
在 d:/pic/目录 放 1.jpg,如下图:
访问
访问:http://localhost:8080/upload/1.jpg
就会去 d:/pic/ 目录下找 1.jpg 文件
测试2
放图片
在 d:/pic/a/目录 放 2.jpg,如下图:
访问
访问:http://localhost:8080/upload/a/2.jpg
就会去 d:/pic/a/ 目录下找 2.jpg 文件
原因:
在类中配置了 **
测试3
类中去掉一个 *,就不能映射子目录,访问:http://localhost:8080/upload/a/2.jpg 就报404错误

