You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Christian Kindler <ch...@kruescho.de> on 2008/03/06 17:15:49 UTC

[FileUpload] no possibility to stop upload in case of a FileSizeLimitExceededException?

Hello,

I'm using FileUpload 1.3 with Tomcat 6.0.16 and JDK 1.6.0_04 on Windows XP.

I changed org.apache.commons.fileupload.FileUploadBase and 
org.apache.commons.fileupload.MultipartStream as described here:
https://issues.apache.org/jira/browse/FILEUPLOAD-145

But the problem is when uploading in file large than the max. size set 
with ServletFileUpload.setFileSizeMax() an exception is thrown but it 
takes a while (I assume until the complete file is uploaded) until the 
request is forwarded to the error.jsp.

What can I do to stop the upload immediatly when the file size limit is 
reached?

See code and stacktrace below.

Christian


----- doPost() method from my upload servlet ----

public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {

	if (ServletFileUpload.isMultipartContent(request)) {
		ServletFileUpload upload = new ServletFileUpload();
		upload.setFileSizeMax(10000000);

		try {
			FileItemIterator iter = upload.getItemIterator(request);
			while (iter.hasNext()) {
				FileItemStream item = iter.next();
				if (!item.isFormField()) {
					String fileName = new File(item.getName()).getName();
					Streams.copy(item.openStream(),
						new FileOutputStream("C:/Temp/" + fileName), false);
				}
			}
		} catch (Exception e) {
			log("ERROR DURING UPLOAD", e);
			RequestDispatcher dispatcher =
				getServletContext().getRequestDispatcher("/error.jsp");
			dispatcher.forward(request, response);
		}
	}
}


---- stack trace ----

org.apache.commons.fileupload.FileUploadBase$FileUploadIOException
	at 
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl$1.raiseError(FileUploadBase.java:655)
	at 
org.apache.commons.fileupload.util.LimitedInputStream.checkLimit(LimitedInputStream.java:71)
	at 
org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:128)
	at java.io.FilterInputStream.read(Unknown Source)
	at org.apache.commons.fileupload.util.Streams.copy(Streams.java:94)
	at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
	at de.test.Test.doPost(Test.java:45)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	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:175)
	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:844)
	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(Unknown Source)
Caused by: 
org.apache.commons.fileupload.FileUploadBase$FileSizeLimitExceededException: 
The field file1 exceeds its maximum permitted  size of 10000000 characters.
	at 
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl$1.raiseError(FileUploadBase.java:649)
	... 20 more

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org