美文网首页
SpringBoot配置静态访问资源,文件上传路径问题

SpringBoot配置静态访问资源,文件上传路径问题

作者: 裂开的汤圆 | 来源:发表于2019-06-04 23:48 被阅读0次

修改.properties文件

配置文件添加如下内容

# 静态资源对外暴露的访问路径
file.staticAccessPath = /upload-images/**
# 文件上传目录,这里需要注意文件夹后面必须得带上斜杠,否则会出现404的问题
file.uploadFolder=D:/Data/upload-images/
# linux下的文件路径配置
# file.uploadFolder=/root/upload-images/

添加两个.java配置文件

UploadFileConfig.java

@Configuration
public class UploadFileConfig {

    @Value("${file.uploadFolder}")
    private String uploadFolder;

    @Bean
    MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(uploadFolder);
        // 单次请求最大上传文件大小
        factory.setMaxRequestSize("10MB");
        return factory.createMultipartConfig();
    }
}

UploadFilePathConfig.java
这里需要注意,extends WebMvcConfigurerAdapter这种写法已经被废弃,可以实现WebMvcConfigurer接口代替

@Configuration
public class UploadFilePathConfig  implements WebMvcConfigurer {
    @Value("${file.staticAccessPath}")
    private String staticAccessPath;
    @Value("${file.uploadFolder}")
    private String uploadFolder;

    /**
     * 配置直静态资源访问路径映射,将访问请求的路径映射到资源文件实际所处的文件路径
     * 这里需要注意windows下与linux下的资源路径写法不同,必须得区分开来
     * @param registry
     */
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        String os = System.getProperty("os.name");
        if(os.toLowerCase().startsWith("win"))
            registry.addResourceHandler(staticAccessPath).addResourceLocations("file:/" + uploadFolder);
        else
            registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
    }
}

注意windows与linux环境的文件路径配置方式不同,这里很容易踩坑

windows下:

  public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(staticAccessPath).addResourceLocations("file:/D:/Data/upload-images/");
    }

Linux下:
linux用‘/’表示根路径,配置时千万不能写成file://data/upload-images,多一个杠就报错了

  public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(staticAccessPath).addResourceLocations("file:/data/upload-images/");
    }

最后

重启项目后,就可以通过localhost:8080/upload-images/xxx.jpg,直接访问D:/Data/upload-images/xxx.jpg这个文件了,如果出现了404的问题,一般是路径写法不正确

相关文章

网友评论

      本文标题:SpringBoot配置静态访问资源,文件上传路径问题

      本文链接:https://www.haomeiwen.com/subject/omwltctx.html