You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "blackbaron.b" <bl...@gmail.com> on 2008/03/21 11:17:48 UTC

Fileupload problem with files larger than few KB

Hello,

I have a following problem with the servlet code using 
commons.fileupload (see below).

If I try to upload a file (using form, method POST and 
enctype="multipart/form-data") larger than few KB, temporary file is 
created (size 10-40 KB, varies) but the destination file is not created. 
E.g. I’ve tried to upload 354 KB file, 40 KB temporary file was created 
on the server running and the iterator was empty (see below) . I have 
tested with several different files and uploaded from several different 
clients: results always vary and I was successful uploading only two 5 
and 7 KB large files from one client (others have also failed with these 
files). On the local server files are uploaded correctly independent of 
their size, without any errors. Server is Tomcat 5.5.

//CODE BEGIN
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...

DiskFileItemFactory factory = new DiskFileItemFactory();
File d = new File("somedir");
d.mkdir();
factory.setRepository(d);

ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(10000000);

List fileItems = null;
try {
fileItems = upload.parseRequest(request);
} catch (FileUploadException e1) {
e1.printStackTrace();
}

Iterator i = fileItems.iterator(); //Line 87
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
File f = new File(somedir+"/"+fileName);

try {
fi.write(f);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

...
} //CODE END

//LOG BEGIN

Servlet.service() for servlet UploadModel threw exception

java.lang.NullPointerException

at jsp.servlets.UploadFile.doGet(UploadModel.java:87)

at jsp.servlets.UploadFile.doPost(UploadModel.java:128)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

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.coyote.http11.Http11Processor.process(Http11Processor.java:874)

at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)

at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)

at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)

at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)

at java.lang.Thread.run(Thread.java:595)

//LOG END

(referring to the line 87 where Iterator is initialized).

Thanks in advance,
Regards
--
b


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