文章目录
- 报错信息
- 原因分析
- 解决方案
一天闲着无聊,打开项目线上报错日志信息,突然发现一段很奇怪的报错:MultipartException,主观认为导致这个问题的原因无非就几个原因:
- 文件上传格式大小超出限制,在配置文件中修改文件大小限制
- 临时存储问题,可能在linux服务器上因为权限或者其他问题导致无法创建临时文件
但是仔细分析发现并不是这几个原因,原因如下:
报错信息
org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request
atorg.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:122)
atorg.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:110)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.(StandardMultipartHttpServletRequest.java:86)
atorg.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:112)
原因分析
- 深入分析堆栈内容,发现有一个客户端中止请求请求,报错:Caused by: org.apache.catalina.connector.ClientAbortException: java.io.EOFException
- 上网看了一下,是因为用户在上传比较大(图片/视频)文件时出现了客户端文件传输中断操作,具体情况可能是传输到一半出现了“切后台”或者“网络断了”等情况
解决方案
该报错不影响线上代码继续运行,只是运行时错误。
该传输方式是HTTP协议的chunk分片传输,如果要解决可以修改传输方式,换成压缩传输,网上有很多其他的例子,不进行赘述。
- 提示:
出现问题直接沿着堆栈信息往下看,找到Caused by打印的信息