ServletFileUpload lance une IOFileUploadException "Stream ended unexpectedly"
Bonjour,
Je bloque depuis quelques jours usr un problème d'upload de fichier (j'y connais pas grand chose faut dire :calim2:)
J'utilise pour cela la classe :
org.apache.commons.fileupload.servlet.ServletFileUpload.ServletFileUpload
Mon upload fonctionne avec des petits fichiers mais quand le fichier est trop gros (avec un fichier de 80ko sur mon serveur local et avec un fichier de 3ko sur la machine distante...), une exception est lancée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
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:359)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at ext.tdp.massdownload.MassDownloadJSPUtilBean.uploadCosFile(MassDownloadJSPUtilBean.java:519)
at org.apache.jsp.netmarkets.jsp.ext.massdownload.FileUploader_jsp._jspService(FileUploader_jsp.java:1491)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.ptc.core.components.filter.JCARedirect.doFilter(JCARedirect.java:248)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at wt.httpgw.filter.WTContextBeanFilter.doFilterInternal(WTContextBeanFilter.java:69)
at wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:326)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1013)
at wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:964)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887)
at java.io.InputStream.read(InputStream.java:89)
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:354)
... 38 more
request headers:
accept=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
referer=http://p75.scorp.local:8090/tdp/netmarkets/jsp/ext/massdownload/FileChooser.jsp?searchSessionId=orgadmin_ff25dfb:129ac3191d5:-7fe4
accept-language=fr
content-type=multipart/form-data; boundary=---------------------------7daa3d1004ca
accept-encoding=gzip, deflate
user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
host=p75.scorp.local:8090
content-length=94244
connection=Keep-Alive
Cache-Control=no-cache
cookie=action_number=83; JSESSIONID=8135C5316AF3B1D79205DEFB2119B05A
authorization=Basic b3JnYWRtaW46b3JnYWRtaW4=
Max-Forwards=10
request parameters:
searchSessionId=orgadmin_ff25dfb:129ac3191d5:-7fe4 |
Mon code qui permet mon upload est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD * 2);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request (**L'EXCEPTION EST LANCEE ICI**)
List<FileItem> items = upload.parseRequest(request);
} |
Voilà je sais pas trop comment faire, j'ai essayé de voir les classes ServletFileUpload avec le debugger mais ça m'a pas appris grand chose...
Si quelqu'un a une idée, je suis preneur !
Merci !