Spring Boot视频206 Partial Content下载出问题总结

本文总结了SpringBoot项目中大文件视频下载时出现的问题及解决方案。表现为206 Partial Content响应下仅首个数据包下载成功,后续包丢失。通过调整maven配置文件,排除特定文件夹过滤,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot视频206 Partial Content下载出问题总结


查找这个问题花了整整两个白天

  1. 现象:下载其他资源正常,只有下载大文件视频,H5标签video下面206 Partial Content时候,会出现问题
    。表现为只有第一个包下载成功,后续包无法下载。 版本spring boot 1.5.3.release Spring MVC
    4.3.8.release。静态资源调用路径ResourceRegionHttpMessageConverter.writeInternal方法–>writeResourceRegion方法的in.close时候返回有异常在DispatcherServlet
    936行mv = ha.handle(processedRequest, response,
    mappedHandler.getHandler()); 抛出异常 在937行dispatchException =
    ex;被catch住,但是没有抛出。异常为java.io.ioexception:您的主机中的软件中止了一个已建立的连接
  2. 寻找问题途径:直接忽略走的弯路,说起作用的寻找方法,先使用空白spring
    boot项目放入视频文件测试,下载良好,怀疑是引入的jar包对spring
    boot产生影响。手动将所有jar包scope设置为test,还是无效,确定不是依赖的jar包问题,最终问题定位到resouce引用(因为java文件中有mybatis的xml配置文件,因此需要配置resources标签把xml也打包),并且因为使用maven的profile,需要做过滤,但视频文件没有设置为不需要替换。
  3. 解决方法:将视频文件目录在替换配置放入exclude,并且新建一个不需要替换的项,包含进去,问题解决!
  4. 具体原因,还是要仔细学习研究,等有时间的时候我来调试不全问题原因。
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>static/css/font/**</exclude>
                    <exclude>static/video/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>static/css/font/**</include>
                    <include>static/video/**</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值