前端上传图片到后端,上传成功后,但是前端访问图片路径时报404错误。
原因
图片确实保存到了后端,但是后端没有刷新(仍然处于上一个状态,此时ajax请求(其它请求也看不到,当然照片不是存在数据库中的,数据库也只是存储相对路径)就会报404 not found错误),也就是没有找到需要回显的图片。所以可以通过重新部署完成。
但是每一次上传图片都要重新部署,显得非常的不合理。
解决方案
配置资源处理器,管理监视静态资源。
如下:
@SpringBootConfiguration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//registry.addResourceHandler(相对路径)
//addResourceLocations(绝对路径)
//System.getProperty("user.dir") 获取当前项目的绝对路径
//获取文件的真实路径
String path = System.getProperty("user.dir") + "\\src\\main\\resources\\static\\images\\item\\adminProfilePicture\\";
String path1 = System.getProperty("user.dir") + "\\src\\main\\resources\\static\\images\\item\\productSinglePicture\\";
String path2 = System.getProperty("user.dir") + "\\src\\main\\resources\\static\\images\\item\\productDetailsPicture\\";
//映射静态资源路径:去static目录下资源,所在在页面上就可以不写static
registry.addResourceHandler("/images/item/adminProfilePicture/**","/static/**").addResourceLocations("file:" + path);
registry.addResourceHandler("/static/**","/images/item/productSinglePicture/**").addResourceLocations("file:" + path1);
registry.addResourceHandler("/static/**","/images/item/productDetailsPicture/**").addResourceLocations("file:" + path2);
}
}