commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Fong" <lielars...@gmail.com>
Subject Problem using Commons fileupload for progress bar with Javaworld example
Date Mon, 25 Aug 2008 04:31:25 GMT
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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message