
view page history | view next version >>
File-Stream Processing Using FileEntryCallback
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 and creating it on the disk may be excessive processing.
The component requires that a listener bean, FileEntryCallback, be created to handle the incrementally uploaded bytes. The contract that FileEntryCallbacks must implement is:
/* Notifies the file handler everytime 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); /* Should we decide to invalidate an upload, perhaps it's over quota, then this method * must handle it for the callback. This method may massage the result (raising some * prompts and accepting upload), or possibly fail the upload for good by calling * FileEntryResults.FileInfo.updateStatus(FileEntryStatus, boolean status). * fileInfo - The same object that was passed into begin(FileInfo) */ public void end(FileEntryResults.FileInfo fileInfo);
This tutorial example demonstrates use of in-memory processing to provide an MD5 hash for files under 5mb, and a toy example of file handling.
There are no images attached to this page. |
- [*Implementing FileEntryCallback*]
- [*Adding the FileEntry Component to Facelet Page*]
- [*Adding the "Quota Exceeded" Dialog*]
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 dependencies.
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!