You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jochen Wiedmann (JIRA)" <ji...@apache.org> on 2018/03/23 15:34:00 UTC

[jira] [Commented] (FILEUPLOAD-290) When a large file is uploaded, if there is a refresh page or other operation, the servlet will get a new request, and the file upload request will be aborted.

    [ https://issues.apache.org/jira/browse/FILEUPLOAD-290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16411575#comment-16411575 ] 

Jochen Wiedmann commented on FILEUPLOAD-290:
--------------------------------------------

What do you expect us to do? A "refresh page" means exactly that: The old HTTP request (if still ongoing) is aborted, a new HTTP request is created, and (as a consequence) the servlet is reinvoked. We can do nothing about it: That is, what the browser does.

 

The only reasonable suggestion that I can see, is this: Show your users a "busy indicator", which advises them, not to refresh the page, even if it takes a long time. (The progress listener might help you with stopping the busy indicator.)

 

Will close this issue as "not a bug" soon.

 

> When a large file is uploaded, if there is a refresh page or other operation, the servlet will get a new request, and the file upload request will be aborted.
> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FILEUPLOAD-290
>                 URL: https://issues.apache.org/jira/browse/FILEUPLOAD-290
>             Project: Commons FileUpload
>          Issue Type: Bug
>    Affects Versions: 1.3.1
>         Environment: JSP、springMVC、spring
>            Reporter: steven gao
>            Priority: Blocker
>
> org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
>  at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:1005)
>  at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903)
>  at java.io.InputStream.read(InputStream.java:101)
>  at org.apache.commons.fileupload.util.Streams.copy(Streams.java:100)
>  at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
>  at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)
>  at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
>  at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:156)
>  at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:139)
>  at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1041)
>  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:887)
>  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
>  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
>  at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
>  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
>  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
>  at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
>  at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
>  at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
>  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
>  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
>  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
>  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
>  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>  at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)