将parent改成本地地址之后,之后进行资源访问时,物理地址并不能显示图片
// 上传的文件 .../upload/文件.png
String parent = "D:/Project/Work/Practical/store/upload";
// File 对象指向这个路径,File 是否存在
File dir = new File(parent);
if(!dir.exists()){ // 检测目录是否存在
dir.mkdirs(); //创建当前目录
}
解决方法
在包config下创建一个实现 WebMvcConfigurer 接口的类
@Configuration
public class UploadFilePathConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//匹配到resourceHandler,将URL映射至location,也就是本地文件夹
//这里最后一个/不能不写
registry.addResourceHandler("upload/**")
.addResourceLocations("file:" + System.getProperty("user.dir") + "/upload/");
}
}
System.getProperty(“user.dir”) 也就是当前项目的地址(D:\Project\Work\Practical\store)
后面跟了个 upload 是因为我把文件保存到这个文件夹了。
然后在 controller 中
String avatar = "/upload/" + filename;
return new JsonResult<>(OK, avatar);
这个 avatar 会被拦截器自动进行地址映射。进行就可以访问本地文件了。