You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Björn Agel (JIRA)" <ji...@apache.org> on 2010/02/12 10:04:28 UTC

[jira] Created: (FILEUPLOAD-180) If ServletFileUpload.setSizeMax() is set the values "bytesRead" and "contentLength" of the ProgressListeners update()-method are ZERO

If ServletFileUpload.setSizeMax() is set the values "bytesRead" and "contentLength" of the ProgressListeners update()-method are ZERO
-------------------------------------------------------------------------------------------------------------------------------------

                 Key: FILEUPLOAD-180
                 URL: https://issues.apache.org/jira/browse/FILEUPLOAD-180
             Project: Commons FileUpload
          Issue Type: Bug
    Affects Versions: 1.2, 1.2.1
         Environment: Tomcat 6.0.24
            Reporter: Björn Agel


I wrote a ProgressListener to visualize the upload of a file.
The Listener works as expected as long as the sizeMax-value of the ServletFileUpload class is not explicitly set.
If it is set the update()-method of the ProgressListener has ZERO-values for bytesRead and contentLength ... whats wrong here?
\\
\\
{code:title=UploadServlet.java|borderStyle=solid}
...
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(request.getCharacterEncoding());
upload.setFileSizeMax(DEFAULT_SIZE_MAX);
// if sizeMax is set the update()-method has ZERO values for bytesRead and contentLength
//upload.setSizeMax(DEFAULT_SIZE_MAX);
FileUploadListener listener = new FileUploadListener(request);
upload.setProgressListener(listener);
			
List items = null;
try {
   items = upload.parseRequest(request);
}
...
{code} 

{code:title=FileUploadListener.java|borderStyle=solid}
public class FileUploadListener implements ProgressListener
{
   private volatile long 
   bytesRead = 0L,
   contentLength = -100L,
   tenKBRead = -1L,
   startTime = System.currentTimeMillis();
		
   public FileUploadListener(HttpServletRequest request) 
   {
      final HttpSession session = request.getSession();
      session.setAttribute("FILE_UPLOAD_LISTENER", this);			
   }
	    	
   public void update(long aBytesRead, long aContentLength, int anItem)	    
   {
      long tenKB = aBytesRead / 10240;
      if (tenKBRead == tenKB)
         return;
      tenKBRead = tenKB;
      bytesRead = aBytesRead;
      if (contentLength != aContentLength)
         contentLength = aContentLength;
   }

   public long getBytesRead() 
   {
      return bytesRead;
   }

   public long getContentLength() 
   {
      return contentLength;
   }
	    
   public long getElapsedTimeInSeconds()
   {
      return (System.currentTimeMillis() - startTime) / 1000;
   }
}
{code} 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.