关于springboot上传图片与视频不显示问题

关于springboot上传图片与视频不显示问题

起因

最近做毕设时候需要上传视频的图片与视频,并且每次都上传了也看到了自己后端有显示以及下载到了指定位置,但是每次都需要重启前端才能展示出此图片

寻找原因

因为是前后端显示都是关于SpringMVC,首先进入WebMvcAutoConfiguration查看关于Springboot中的默认配置的显示静态资源的路径。

1.进入WebProperties.Resoures中查看默认的配置

2.查看默认的配置显示的信息都是放在下面的几个位置(也就是只需要将文件放在如下几个地方就可以进行展示)

字符串对应的路径举例

classpath:/static/ 为下图 resources中的static下的所有图片信息 (这里我在里面创建了一个uploads文件夹,在uploads文件夹中创建了img文件夹,img里面我才放我的图片)

分析

很明显,现在是资源绝对是加载到了我想要放入的位置,但是就是不能实时的访问到,那就是很有可能上传了文件,但是因为上传的路径于MVC中的不匹配,没有进入服务器认为的安全路径(可能被拦截了),所以就没有将刚才上传的图片放入你的tomcat中,但是每次重启之后他又因为SpringBoot中的设置的默认路径都会加载进你的程序中,就出现了重启过后才能显示的情况。

解决方案

现在SpringMVC不认识你的请求路径那么就让他知道你的路径,并且映射到你存储位置(上传路径与下载的位置相对应)

例如:

我们前端的请求路径是/uploads/img/** (现在SpringMVC不认识),下载路径为 System.getProperty("user.dir") + /src/main/resources/static/uploads/img/

解决方式:

配置SpringMVC的放行路径(使SpringMVC认识上传路径)

typescript 复制代码
 @Configuration
 public class MyPicConfig implements WebMvcConfigurer {
 ​
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         //前面为请求路径,后面为文件存储位置
         registry.addResourceHandler("/uploads/img/**").addResourceLocations("file:"+ System.getProperty("user.dir") + "/src/main/resources/static/uploads/img/");
     }
 }

总结

要想图片能够实时展示有俩个主要因素

1.前端请求路径让tomcat能够认识,让其认为是安全路径

2.后端的下载位置需要与你的SpringBoot认识就比如上面源码中的默认位置

俩这缺一不可,这是我个人的理解,如果我的理解有误,请指正,本人会立马整改。

相关推荐
半旧5183 分钟前
【Java Web02】WEB服务器内部实现技术揭秘
java·服务器·前端
gis开发之家5 分钟前
日志怎么打才专业?Spring Boot 4 日志体系与 Logback 配置(生产级实战)
java·spring boot·后端·logback
卷无止境10 分钟前
FastAPI CLI 你需要认识这把命令行利器
后端·python·fastapi
拿本唠嗑AI研究12 分钟前
现代前端架构爬虫指南:从静态页面到 React/Vue 单页应用
前端·爬虫·架构
AINative软件工程25 分钟前
LLM 请求合并工程实践:用 Single-Flight 把并发重复调用从 N 次砍成 1 次
后端·llm·ai编程
程序员爱钓鱼28 分钟前
Go 编程实战:数组 Array——固定长度的数据集合
后端·面试·go
独孤九剑打醒他30 分钟前
【原创开源】双层Master‑Worker软硬协同调度架构:从根源解决分布式数据一致性难题
前端·嵌入式硬件·架构·前端框架·硬件工程
程序员黑豆6 小时前
Java包装类:基本类型与对象的桥梁
java·前端·ai编程
桦说编程9 小时前
并发编程中的等待-通知模式:从 wait/notify 到 Guava Monitor
后端
bugcome_com9 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json