关于jfinal上传大文件报错

我在后台系统中使用layui上传一个接近200M的视频。,

上传报错,后台日志信息如下。

  1. java.lang.RuntimeException: org.apache.catalina.connector.ClientAbortException: java.io.EOFException: Unexpected EOF read on the socket
  2. at com.jfinal.upload.MultipartRequest.wrapMultipartRequest(MultipartRequest.java:126)
  3. at com.jfinal.upload.MultipartRequest.<init>(MultipartRequest.java:63)
  4. at com.jfinal.core.Controller.getFiles(Controller.java:764)
  5. at com.jfinal.core.Controller.getFile(Controller.java:769)
  6. at com.yutong.cms.admin.controller.ComnController.uploadVideo(ComnController.java:170)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  8. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  9. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  10. at java.lang.reflect.Method.invoke(Method.java:498)
  11. at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
  12. at com.jfinal.core.ActionHandler.handle(ActionHandler.java:82)
  13. at com.yutong.cms.core.handler.WebSocketHandler.handle(WebSocketHandler.java:15)
  14. at com.jfinal.plugin.druid.DruidStatViewHandler.handle(DruidStatViewHandler.java:75)
  15. at com.yutong.cms.core.handler.ActionHandler.handle(ActionHandler.java:45)
  16. at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
  17. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  18. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  19. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
  20. at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
  21. at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
  22. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  23. at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
  24. at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
  25. at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
  26. at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
  27. at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
  28. at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
  29. at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
  30. at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  31. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  32. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  33. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
  34. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
  35. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
  36. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
  37. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
  38. at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
  39. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
  40. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
  41. at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
  42. at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
  43. at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
  44. at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
  45. at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  46. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  47. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  48. at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  49. at java.lang.Thread.run(Thread.java:748)
  50. Caused by: org.apache.catalina.connector.ClientAbortException: java.io.EOFException: Unexpected EOF read on the socket
  51. at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:348)
  52. at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)
  53. at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)
  54. at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:183)
  55. at com.oreilly.servlet.multipart.BufferedServletInputStream.fill(BufferedServletInputStream.java:64)
  56. at com.oreilly.servlet.multipart.BufferedServletInputStream.readLine(BufferedServletInputStream.java:108)
  57. at com.oreilly.servlet.multipart.LimitedServletInputStream.readLine(LimitedServletInputStream.java:60)
  58. at com.oreilly.servlet.multipart.PartInputStream.fill(PartInputStream.java:97)
  59. at com.oreilly.servlet.multipart.PartInputStream.read(PartInputStream.java:195)
  60. at com.oreilly.servlet.multipart.PartInputStream.read(PartInputStream.java:156)
  61. at com.oreilly.servlet.multipart.FilePart.write(FilePart.java:208)
  62. at com.oreilly.servlet.multipart.FilePart.writeTo(FilePart.java:167)
  63. at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:272)
  64. at com.jfinal.upload.MultipartRequest.wrapMultipartRequest(MultipartRequest.java:107)
  65. ... 47 more
  66. Caused by: java.io.EOFException: Unexpected EOF read on the socket
  67. at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:736)
  68. at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40)
  69. at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1086)
  70. at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)
  71. at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:263)
  72. at org.apache.coyote.Request.doRead(Request.java:581)
  73. at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:344)
  74. ... 60 more

同时我也有修改过tomcat的链接超时时间。但仍然出错。

  1. <Connector port="8080" protocol="HTTP/1.1"
  2.                connectionTimeout="300000"
  3.                redirectPort="8443" />

请求波总支援

评论区

阿城锅

2019-05-27 11:57

JFinal

2019-05-27 12:03

异常是:java.io.EOFException: Unexpected EOF read on the socket

也就是说上传的数据格式不对,没有遵守 html 规范,注意查看客户端代码

阿城锅

2019-05-27 13:38

@JFinal
public void uploadVideo() {
try {
Constants constants = new Constants();
UploadFile file = this.getFile("file", "video");
file.getFile().createNewFile();
Map data = new HashMap();
data.put("filePath", "/"+constants.getBaseUploadPath()+"/video/" + file.getFileName());
data.put("fileName", file.getFileName());
rendSuccessJson(data);
} catch (Exception e) {
e.printStackTrace();
rendFailedJson(ErrorCode.get("9999"));
}
}
小文件没问题,大文件上传,在上传读条过程中超过了一定时间就出现此类错误

要输就输给追求

2019-05-27 15:22

看看我用jfinal处理的大文件上传。 https://gitee.com/ysjsgzq/splitUpload.git 浏览器直接把文件切成小片,然后服务器端接收了再组合起来

热门反馈

扫码入社