Skip to content

如何访问springBoot项目上传本地的资源

需求

springBoot项目上传的资源保存在本地,通过连接访问报错

解决办法

项目:misscmszb/WebConfiguration

在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();
    } 
}

如有转载或 CV 的请标注本站原文地址