坑:今天踩了坑,我上传到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:你的路径
"
资源处理器主要是要做项目代码和资源文件夹的分离,可以将资源文件夹设置到项目之外的某个地方,避免资源被编译到项目中,正是因编译的关系,导致文件访问时是基于编译后的项目访问,当新上传了文件因其未被编译到项目中,因此无法识别。