springboot通过设置addResourceHandlers
拦截请求访问本地资源踩坑实战
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
String os = System.getProperty("os.name");
//如果是Windows系统
if (os.toLowerCase().startsWith("win")) {
registry.addResourceHandler("/app_file/**")
// /app_file/**表示在磁盘filePathWindow目录下的所有资源会被解析为以下的路径
.addResourceLocations("file:" + filePathWindow);
} else { //linux 和mac
registry.addResourceHandler("/app_file/**")
.addResourceLocations("file:" + filePathLinux) ;
}
super.addResourceHandlers(registry);
}
添加拦截请求注意事项
我是通过yaml配置文件访问地址(此处坑注意访问文件路径根式正确)
file:
common:
## windows系统下访问路径
uploadWindow: E:\common\file\root\
## windows系统下访问路径
uploadLinux: /user/img/
注意每个访问路径后面的路径加 / !!!
注意每个访问路径后面的路径加 / !!!
注意每个访问路径后面的路径加 / !!! 重要的事情说三遍
mac:
@Configuration public class UploadFilePathConfig implements WebMvcConfigurer { @Value("${file.staticAccessPath}") private String staticAccessPath; @Value("${file.uploadFolder}") private String uploadFolder; // @Value("${file.uploadImage}") // private String uploadImage; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // registry.addResourceHandler(staticAccessPath).addResourceLocations("file:///" + uploadFolder + uploadImage); registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder ); } }
file.staticAccessPath=/temp/** # æ件ä¸ä¼ ç®å½,è¿ééè¦æ³¨ææ件夹åé¢å¿é¡»å¾å¸¦ä¸ææ ï¼å¦åä¼åºç°404çé®é¢ file.uploadFolder=/Users/xxx/Desktop/GitPro/MovieServer/resource/