使用Apache common fileupload 1.2.1时出现下面异常(当上传相对较大的文件时):
2009/07/22 12:55:01 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:/Java/jdk1.6.0_10/bin;.;D:/WINDOWS/Sun/Java/bin;D:/WINDOWS/system32;D:/WINDOWS;D:/Java/jdk1.6.0_10/jre/bin;D:/Java/jdk1.5.0_06/bin/../jre/bin/client;D:/Java/jdk1.5.0_06/bin/../jre/bin;D:/Java/apache-ant-1.7.1/bin;D:/Java/grails-1.1.1/bin;D:/Java/groovy-1.6.3/bin;D:/Program Files/CodeGear/RAD Studio/6.0/bin;D:/Documents and Settings/All Users/Documents/RAD Studio/6.0/Bpl;D:/ruby/bin;D:/Java/jdk1.5.0_06/bin;D:/WINDOWS/system32;D:/WINDOWS;D:/WINDOWS/System32/Wbem;D:/AppServ/Apache2.2/bin;D:/AppServ/php5;D:/Program Files/CVSNT/
2009/07/22 12:55:01 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8081 で初期化します
2009/07/22 12:55:01 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 390 ms
2009/07/22 12:55:01 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2009/07/22 12:55:01 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.18
2009/07/22 12:55:03 org.apache.cxf.transport.servlet.CXFNonSpringServlet loadBusNoConfig
情報: Load the bus without application context
2009/07/22 12:55:05 org.apache.cxf.transport.servlet.AbstractCXFServlet replaceDestinationFactory
情報: Replaced the http destination factory with servlet transport factory
2009/07/22 12:55:05 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /SystemSrvc
2009/07/22 12:55:06 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /UserSrvc
2009/07/22 12:55:06 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /PublicSyllabusSrvc
2009/07/22 12:55:06 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /InformationSrvc
2009/07/22 12:55:06 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /MasterSrvc
2009/07/22 12:55:06 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /CustomerSrvc
2009/07/22 12:55:07 org.apache.cxf.endpoint.ServerImpl initDestination
情報: Setting the server's publish address to be /InteruseSyllabusSrvc
2009/07/22 12:55:12 org.apache.catalina.core.ApplicationContext log
情報: ContextListener: contextInitialized()
2009/07/22 12:55:12 org.apache.catalina.core.ApplicationContext log
情報: SessionListener: contextInitialized()
2009/07/22 12:55:13 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1を http-8081 で起動します
2009/07/22 12:55:13 org.apache.jk.common.ChannelSocket init
情報: JK: ajp13 listening on /0.0.0.0:8009
2009/07/22 12:55:13 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/32 config=null
2009/07/22 12:55:13 org.apache.catalina.startup.Catalina start
情報: Server startup in 11590 ms
log4j:WARN No appenders could be found for logger (org.apache.xml.security.signature.Reference).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN No appenders could be found for logger (org.apache.xml.security.signature.Reference).
log4j:WARN Please initialize the log4j system properly.
org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at com.nauproject.apm.servlet.FileUploadServlet.processRequest(FileUploadServlet.java:71)
at com.nauproject.apm.servlet.FileUploadServlet.doPost(FileUploadServlet.java:55)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.nauproject.apm.filter.NoCacheFilter.doFilter(NoCacheFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
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:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:983)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887)
at java.io.InputStream.read(InputStream.java:85)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:94)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:362)
... 26 more
来张贴图:
网上有人说是fileupload组件的Bug。我因为一时没能找到解决的办法,于是改用smartupload。无奈该组件已经很久不维护,官网都打不开了。
代码如下:
smartupload一共有6个文件,我把源代码贴出来好了。
ServletUpload.java
SmartFile.java
SmartFiles.java
SmartRequest.java
SmartUpload.java
SmartUploadException.java