Incremental Upload Processing Using FileEntryCallback

You are viewing an old version (v. 5) of this page.
The latest version is v. 16, last edited on Aug 23, 2012 (view differences | )
<< View previous version | view page history | view next version >>

Incremental Upload Processing Using FileEntryCallback

There are currently no attachments on this page.

The all-new ACE FileEntry component introduces in-memory file processing. This feature is designed to provide for anti-virus scanning, validity checks or a scenario where the upload doesn't need to be saved to disk, and doing so immediately is excessive IO.

The component requires that a listener bean, implementing FileEntryCallback, be created to handle the incrementally uploaded bytes. The methods that instances of FileEntryCallback must implement are:

/* Notification for upload handler when a file begins uploading.
 * fileInfo - information known about the file, before downloading the contents */
public void begin(FileEntryResults.FileInfo fileInfo);

/* We're working with chunks of bytes, as we read them in... */
public void write(byte[] buffer, int offset, int length);

/* We work with bytes, as we read them in... */
public void write(int data);

/* Notification for upload handler the file is finished uploading.
 *  
 * Should we decide to invalidate an upload, perhaps it's over quota, then this method
 * must handle the case. This method may massage the result (raising some
 * prompts and accepting upload), or possibly fail the upload for good by calling
 * FileInfo.updateStatus(FileEntryStatus, boolean status) on its FileInfo input.
 * fileInfo - The same object that was passed into begin(FileInfo)
 */
public void end(FileEntryResults.FileInfo fileInfo);

This example demos in-memory processing to provide an MD5 hash for 3 files, and demo a toy example of file handling for the 4th.




Implementing FileEntryCallback


  • Check fileInfo.getStatus() to determine if the file has pre-failed uploading, due to too many files uploaded, an invalid file extension, or content type.
    Creating our handler is the most important step of this tutorial. Everything else is just wiring up the dependant parts.
  • The Class Properties

    FileEntryMD5Callback.java
    public void begin(FileEntryResults.FileInfo fileInfo) {}
    
  • The begin Method

    FileEntryMD5Callback.java
    public void begin(FileEntryResults.FileInfo fileInfo) {}
    
  • The write Methods

    FileEntryMD5Callback.java
    public void write(byte[] buffer, int offset, int length) {}
    public void write(int data) {}
    
  • The end Method

    FileEntryMD5Callback.java
    // Some comments here
    public void end(FileEntryResults.FileInfo fileInfo) {}
    

Adding the FileEntry Component to a Facelet Page


Adding the "Quota Exceeded" Dialog to a Facelet Page


That concludes this overview of the new in-memory processing feature. If you're interested in further details of how this example works, take a look at the complete source code below; or sign up for ICEfaces training for a complete guide to this example and every feature of ICEfaces!

There are currently no attachments on this page.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

© Copyright 2017 ICEsoft Technologies Canada Corp.