Premature end of Content-Length delimited message body解决方案

举报
辰兮 发表于 2022/03/22 23:11:31 2022/03/22
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、...

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…

最近涉及到文件上传相关的代码,看服务器日志显示的是这个Premature end of Content-Length delimited message body

翻译:内容长度分隔的消息正文过早结束

在这里插入图片描述
比如原计划传输100000 B,实际只是传输了88888 B,此时流关闭了。


本地打debug是:显示IO异常 连接关闭

百度了一下相关原因:就是说一个流转文件可能只转了一半,你将流关闭了,这样就导致了IO异常


复现一下我的情况:

第一步:先是通过路径获取文件转换成流 第二步:通过这个流获取这个文件的文字

debug到第二步就爆IO异常

异常原因:我的第一个方法下载的时候转换流,提前关闭了连接,导致第二步流没有全部提取出来成文字爆出异常

解决方案:修改代码逻辑,等到第二步全部执行完成,再执行流的关闭

method A{
    try{
         //第一步:先是通过路径获取文件转换成流
         //第二步:通过这个流获取这个文件的文字
   }catch{
     //捕捉异常
   }finally{
     //关闭流操作
   }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

总结:遇到这样的异常一定要debug定位到具体的报错位置,看看是不是因为上述流关闭导致的异常,新手先尝试注释一下前面的流的close方法,重新测试,看看报错是否解决,如果解决,调整代码逻辑即可成功解决!

关闭资源 原则:先开后关,后开先关


The best investment is to invest in yourself.

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2020.12.29 23:13 愿你们奔赴在自己的热爱里!

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/111939084

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。