FileSender 1.5 is our next major release. It uses the same back end as 1.0, but a new front-end: without Gears, using the HTML5 FileAPI for uploading files larger then 2GB (already supported by FireFox4 and Chrome). Uploads with browsers without (enough) support for the HTML5 FileAPI (Safari5, IE8, IE9) will be limited to 2GB and a very small Flash component will do the actual upload, providing us with a reliable progress bar. The functionality is the same as with FileSender 1.0, but we will have gotten rid of Gears for uploads larger then 2GB, and of most of the Flash code.
FileSender 1.5 has now progressed far enough to be essentially working, but for small details. You should be able to get a test install up and running using the 1.5 branche in our SVN repository. If you do, please let us know at the filesender-dev list. Now that we are at the stage where “it should work”, we can start with packaging, testing and debugging. So all in all things are looking good.
What has happened the past weeks with FileSender 1.5?
The FileAPI code suddenly stopped working, after browser upgrades of FF and Chrome. The HTML5 FileAPI spec writers discovered they had done something wrong, they changed the “slice method” definition in the spec and the early implementations (FF and Chrome) had to change their code which broke our code. All is working again. See at the bottom of the post for a more detailed explanation of what happened.
Remaining work: Upload
- Implement Upload cancel functionality
- Implement locking all fields while uploading a file
- Check for undesired file extensions
- Pull out a little bit of test code
Remaining work: Voucher
- Implement the “Are you sure” question when a user cancels a voucher.
Remaining work: MyFiles
- Implement the “are you sure” question when a user deletes a file
- Implement the functionality to add a new recipient to an existing download
Remaining work: Stylesheet
- simplify/tidy stylesheet and document it
Remaining work: Administration interface
- displaying query results over multiple pages
SVN repository, 1.5 branch
What happened with the HTML5 FileAPI slice code?
slice method previously had different semantics, which differed from both
String.prototype.slice [ECMA-262]. This difference was an oversight which has been corrected in this edition of the specification. Some user agents implemented the previous semantics, notably Firefox 4, Chrome 10, and Opera 11. These user agents have agreed to vendor-prefix their
slice implementations in subsequent releases.”
Note the nice little bit about the vendor-prefix. This results in our code now having this little addition:
if(file && file.webkitSlice )
var blob = file.webkitSlice(bytesUploaded, txferSize+bytesUploaded);
if(file && file.mozSlice )
var blob = file.mozSlice(bytesUploaded, txferSize+bytesUploaded);
if(file && file.slice )
var blob = file.slice(bytesUploaded, txferSize);
Great. Brand new technology and already legacy issues 😉
- Updated Slice method: http://dev.w3.org/2006/webapi/FileAPI/#slice-blob
- Slice related bug thread on Chromium: http://code.google.com/p/chromium/issues/detail?id=80347
- Webkit update message explaining that the vendor-prefix has been added: https://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/2c963f6ecdae0573?pli=1
- Report on the change to the FileAPI standard: http://lists.w3.org/Archives/Public/public-webapps/2011AprJun/0170.html