上传文件到springboot的资源文件夹

坑:今天踩了坑,我上传到static下videos文件夹的文件,在浏览器访问不到,思前想后发现是项目没有刷新。
代码

private final String SAVE_PATH = "src\\main\\resources\\static\\videos" ;

byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
Path path = Paths.get(SAVE_PATH, file.getOriginalFilename());
Files.write(path, bytes);

访问资源

http://pichub.zicp.vip/videos/{filename}

解决的方法
配置资源处理器作虚拟映射

@Configuration
public class ResourceHanlderConfig  implements WebMvcConfigurer{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/videos/**").addResourceLocations("file:src\\main\\resources\\static\\videos\\");
    }
}
  • addResourceHandler()里配置需要映射的文件夹,此处代表映射文件夹videos下的所有资源。
  • addResourceLocations()配置文件夹在系统中的路径,使用绝对路径,格式为"file:你的路径"

资源处理器主要是要做项目代码和资源文件夹的分离,可以将资源文件夹设置到项目之外的某个地方,避免资源被编译到项目中,正是因编译的关系,导致文件访问时是基于编译后的项目访问,当新上传了文件因其未被编译到项目中,因此无法识别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容