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
In the 1.5 branch the redundant flex frontend code, gears javascript code and file used for flex-php communication have now been removed. All existing backend code is where it was. The new Flex code for the little Flash upload component (that will do <2GB uploads in non-HML5 browsers) is in SVN
What happened with the HTML5 FileAPI slice code?
From 5.2.1. The slice method of the HTML5 FileAPI spec:
“Note: The slice
method previously had different semantics, which differed from both Array.prototype.slice
and 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 😉
Relevant links: