问题描述: 【SpringBoot|解决决SpringBoot图片上传需重启服务器才能显示的问题】前端页面实现头像图片上传并实时更新显示的功能,但是文件上传成功后不能实时显示,必须重启服务器后才能显示出来
下图是我将图片文件上到到的目录,及项目架构
文章图片
问题发生的原因
这是服务器的自我保护机制,为了防止暴露绝对路径SpringBoot 把静态的文件在启动的时候都会加载到classpath的目录下的,package时把static目录下的资源一起打包到了jar包或war包中,此时上传的图片并未传入启动了的项目中,所以访问不到。项目重启后又会打成新的jar包,包含上一次上传的的图片,此时才会在页面上显示
简单点说就是:上传图片后target包中没有加载重启服务器后target包内会重新加载
文章图片
解决方式如下 配置静态资源映射
addResourceHandler("/static/images/upload/**"):这里面的是你需要映射的文件夹
addResourceLocations(“file:E:\Allworkspaces\idea-workspace\SpringBoot\store\src\main\resources\static\images\upload\”):将里面的路径改为你自己图片上传保存位置的绝对路径,file不能掉
@Configuration
public class ImageUploadConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/images/upload/**").addResourceLocations("file:E:\\Allworkspaces\\idea-workspace\\SpringBoot\\store\\src\\main\\resources\\static\\images\\upload\\");
}
}
前端src访问路径(这也很重要)
/static/images/upload/CE6B29EE-085F-4E96-845E-EA969207BC95.JPG
/static/images/upload为你配置的映射路径后面的为你自己上传的文件名
访问这个路径就可以实时访问到图片,不会出现需要重启服务器的问题
这块位置切记!!!!
推荐阅读
- SpringBoot|SpringBoot自定义分布式缓存starter 并用@Enablexx 控制缓存功能是否启用
- 数据库|springboot 配置Druid多数据源监控
- springsecurity|SpringBoot整合SpringSecurity带图片验证码简单实现
- java|SpringBoot从入门到入门学习笔记
- MyBatis|Spring Boot(十)(Druid的监控统计和多数据源配置)
- SpringBoot|保姆级教程—部署SpringBoot项目至云服务器(华为云)
- SpringBoot|SpringBoot整合Spring Boot Admin实现服务监控
- Java|SpringBoot入门项目-基于JPA的App日记后台系统之数据库的创建与JPA的CRUD(二)
- SpringBoot|【随记】Springboot集成Redis配置(单机,集群)