Problem using Commons fileupload for progress bar with Javaworld
example
Hi
I'm using Apache Commons for FileUpload to do a progress bar using
Ajax. I'm using prototype for ajax. I'm having trouble trying to track
the progress of the file upload. I'm using the example at http://www.javaworld.com
/javaforums/showthreaded.php?Cat=2&Number=49773&page=0.
Here is the relevant code ...
<snip>
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
CustomProgressListener l = new CustomProgressListener();
upload.setProgressListener(l);
fileID = Integer.parseInt(generateRandomNumber(4));
l.setId(fileID);
map2.put(fileID, l);
try {
List<FileItem> items = upload.parseRequest(req);
System.out.println("UploadMe::process2 items "+items);
for (Iterator<FileItem> i = items.iterator(); i.hasNext(); ) {
FileItem item = i.next();
System.out.println("FileUpload::process2 name "+item.getName());
item.write(new File(PATH+item.getName()));
}
res.setContentType("text/html");
System.out.println("UploadMe::process2 after parseRequest");
PrintWriter pw = res.getWriter();
pw.write("\n\t<html><head><title></title></head><body>");
pw.write("<script type=\"text/javascript
\">window.parent.queryMyProgress('"+fileID+"')</script>");
pw.write("</body></html>");
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
</snip>
I found that when the code hits 'upload.parseRequest', the servlet
completes that line, that is uploads the file before proceeding. Hence
I can't track the file upload even using the ProgressListener
implementation.
The map, is just keeping track of the instance so that I can load the
object again. In the Javaworld example, they use the session.
Has anybody come across issues? How can I make sure that parseRequest
is executed, but the servlet doesn't complete the step?
Everything else (ie, AJAX communicating) works.
Cheers
Patrick