如何访问springBoot项目上传本地的资源
需求
springBoot项目上传的资源保存在本地,通过连接访问报错
解决办法
在webMvc配置文件里重写addResourceHandlers方法,对静态资源访问进行映射
WebConfiguration
java
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Value("${cms.file.store-dir:assets/}")
private String dir;
@Value("${cms.file.serve-path:assets/**}")
private String servePath;
/**
* 访问静态资源文件配置
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// classpath: or file:
// 如果静态资源访问的路径是getDirServePath()返回的值,就映射到访问本地的addResourceLocations的参数路径上
registry.addResourceHandler(getDirServePath())
.addResourceLocations("file:" + getAbsDir() + "/");
}
private String getDirServePath() {
// assets/**
// assets/
// /usr/local/assets/
// assets
return servePath;
}
/**
* 获得文件夹的绝对路径
*/
private String getAbsDir() {
if (FileUtil.isAbsolute(dir)) {
return dir;
}
String cmd = System.getProperty("user.dir");
Path path = FileSystems.getDefault().getPath(cmd, dir);
return path.toAbsolutePath().toString();
}
}