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认识上传路径)
@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认识就比如上面源码中的默认位置
到此这篇关于SpringBoot上传图片与视频不显示问题的解决方案的文章就介绍到这了,更多相关SpringBoot上传图片与视频不显示内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
通过自定制LogManager实现程序完全自定义的logger
本章主要阐述怎么完全定制化LogManager来实现应用程序完全自定制的logger,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03
RocketMQ生产者一个应用不能发送多个NameServer消息解决
这篇文章主要为大家介绍了RocketMQ生产者一个应用不能发送多个NameServer消息原因及解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11
详解Spring系列之@ComponentScan自动扫描组件
这篇文章主要介绍了Spring @ComponentScan自动扫描组件使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-06-06
SpringBoot整合Mybatis-Plus实现关联查询
Mybatis-Plus(简称MP)是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,本文给大家介绍了SpringBoot整合Mybatis-Plus实现关联查询,需要的朋友可以参考下2024-08-08


最新评论