上传文件异常 Unable to parse request ;FileUploadException: Connection reset

  最近在使用一个文件上传组件。发现在上传文件时出现了以下问题:

  1.文件上传文本类型的文件,txt,xml 等类型是正常的。

  2.媒体类型文件上传会出现异常。异常如下:

[WARN] 2018-10-22 14:33:00 390 - Unable to parse request
org.apache.commons.fileupload.FileUploadException: Connection reset
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:362)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parseRequest(JakartaMultiPartRequest.java:192)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.processUpload(JakartaMultiPartRequest.java:131)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:92)
    at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:84)
    at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:849)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:196)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:756)

  这个问题在测试环境中没有出现,各种文件类型上传正常。但是到了正式环境就出问题。经过很长时间的调试(远程调试),发现代码执行的时候没有进到action类就会直接报错。各种测试,仍然找不到问题的根源。

  然后在搜索的时候发现了各种类似的问题:

    1.有的是上传文件太大,触发了tomcat上传限制。上传文件大小不是问题,主要是文件类型的问题。

    2.重复请求导致连接重置。排查了连接情况,不属于这种情况。

    3.在环境中,上传文件时需要先生成临时文件,如果临时文件夹在服务器中没有权限,创建临时文件失败会导致上传文件失败。排除,在服务器中,整个tomcat文件夹和其子目录都有权限。而默认情况下,临时文件夹会在tomcat下的work目录下子目录创建临时文件。除非特别配置了该临时文件夹路径,否则一般不会出现这个问题。

    4.网络问题,防火墙配置拦截资源。很有可能,然后排查目标服务器上的防火墙,没有开启。

  一次偶然,发现该服务器上的项目一个网页中的音频文件播放失败,播放时阻塞,浏览器调试窗没有报错。发现浏览器加载该资源成功,就是不能播放。抓包发现连接有问题。

  只是在请求一个wav文件,但是返回的却是文本数据。而且连接也是会复位。更加确定是被拦截了。最后发现是公司网络对音频网络资源进行了拦截。可能是为了不让你上班看视频,听音乐吧。使用手机热点进行访问服务器并上传文件,正常使用。这解释了为什么测试环境没有问题,因为公司内部网络不会进行拦截。

  总结,当connect reset出现,可以通过切换网络访问测试,看是否有防火墙拦截问题。

转载于:https://www.cnblogs.com/coderbill/p/9848342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值