Category Archives: Uncategorized

Fine Uploader 5.11 – A whole new, better build with rewritten documentation

5.11.0 was actually released back in August. But I’ve been so busy with other advancements to the project, creating a React wrapper (which I’ll talk about in my next post), and finishing up my book, that I didn’t really have time to write a proper post to formalize this release.

Since 5.11.0 was released, nine (yes, nine) patch releases followed, the most recent hitting the web a week ago today. Some of these were regressions caused by the initial work on 5.11.0 (and the work was substantial, so this is not surprising). But other patches were unrelated to the 5.11.0 changes, and came to light thanks to the significant uptick in community involvement. I’m surprised by and grateful for all of those who have given their time and expertise to Fine Uploader since the transition to an MIT license.

In addition to work on the core library by a number of GitHub users, two other contributors have given their time to create a couple new repositories. One, bower-dist (maintained by Fery Wardiyanto), brings Fine Uploader to all bower users. Previously, Fine Uploader was only available via npm or direct download, but bower is now a viable and supported option as well. Orlando Valdez created the fineuploader-go-server repository, which brings an easy to use and full-featured Fine Uploader server implementation to Golang. Word is Orlando is also consider a Spring Boot server at some later date.

Anyway, back to the 5.11 release – I rewrote the entire build process. Grunt and the laundry-list of outdated grunt plugins along with the maze of other JavaScript files, are no longer part of the mix. Instead, a single Makefile holds all build logic. In addition to speeding up and simplifying the build, a standalone drag-and-drop module is now part of the official build output, and a core (non-UI) JS file is created for Fine Uploader traditional, S3, Azure, and the “all” module (traditional, S3, & Azure combined). In subsequent hotfix releases, the “Getting Started” guide was completely re-written and vastly improved. Check the releases section of the fine-uploader GitHub project for information on these and subsequent patch releases related to 5.11.

 

 

Fine Uploader 5.8 – CommonJS & ES6 Module Support

It’s now dirt simple to import Fine Uploader into your project using CommonJS, ECMAScript 6 imports, or even AMD. If you download Fine Uploader via npm, you will instantly have access  to this feature. You’ll find that importing the library into your modern web project is exceptionally elegant. Depending on your needs, it may be as simple as “import qq from ‘fine-uploader'”! There is a very detailed feature page on the documentation site that you may enjoy reading, should you find yourself in need of this type of support.

If you see any issues with CommonJS, ES6 module, or even AMD support, please do open an issue in Fine Uploader’s issue tracker. Happy uploading!

Fine Uploader 5.4 – AWS S3 Version 4 Signature Support

Update: November 17, 2015 – 5.4.1 Hotfix Release

  • HTML structure of initial file lists is invalid. (#1498)

 

Support For AWS S3 Version 4 Signatures

Since version 3.8, Fine Uploader has natively supported uploads directly to an S3 bucket from the browser. Requests were signed using Amazon’s version 2 signature algorithm. Since then, AWS has been pushing a vastly different signing algorithm, known as version 4. While all S3 regions support version 2 and version 4 signatures, newer regions, such as Frankfurt, only support version 4 signatures. Future regions will likely have the same limitation. As a result, version 4 signature support has been heavily requested of Fine Uploader S3 users. Starting with Fine Uploader 5.4, this signing algorithm is officially supported by the library. This support extends to “serverless” uploads to S3 and uploads to S3 through a CDN/proxy.

Adding support for version 4 signatures to Fine Uploader S3 was a significant undertaking due to the extreme complexity of the new signing process. Luckily, I was able to do this without any breaking changes to the library. As a result, if you want to continue using version 2 signatures, you do not have to make any changes to your server or client-side code after upgrading to Fine Uploader 5.4. Version 4 signature support exists alongside version 2. If you’d like to enable version 4 support, you must follow these steps:

  1. Set the signature.version option to 4. You may also use a value of 2 to explicitly switch to version 2 support, but this is not necessary as the default value of this option is 2.
  2. Optionally set the objectProperties.region option to the appropriate region for your S3 bucket. This defaults to “us-east-1”.
  3. Update your server-side signature code to support version 4 signatures. I have updated the PHP, Java, and NodeJS server-side examples to include this support. For other languages, please follow the directions on the S3 server-side documentation page.

Note that there are browser-side performance consequences associated with version 4 signatures when the chunking feature is enabled. This is, unfortunately, unavoidable, as Amazon has required all chunk data (including the file bytes) to be hashed. Fine Uploader, of course, must do this in the browser before sending the signature request to your server.

Fine Uploader 5.4 also brings a host of bug fixes. For more information, please see the list of cases associated with this milestone in the GitHub project’s issue tracker.

What’s Next?

The next planned release is currently version 5.5. In this next version of Fine Uploader, we plan to address support for standard HTTP request headers in Fine Uploader S3. This will allow you to, for example, easily set a Content-Disposition header on any object uploaded to S3 in order to force a download when the object is requested. Additionally, Fine Uploader S3 will be adjusted to accommodate clock drift on a user’s machine. This will put an end to issues the prevent uploads to S3 when an uploader’s machine time is not accurate. The next planned release after 5.5 is 6.0, which will contain some substantial new features and adjustments.

We Love Customer Feedback

Is something missing from Fine Uploader? Please let us know. We always give priority to useful customer-requested features. Take the opportunity to guide the evolution of Fine Uploader around your needs. The community is the most important aspect of this library, and we always love to hear from you.

Happy Uploading!

iOS8 presents serious issues that prevent file uploading

Each new version of iOS seems to come with new bugs surrounding browser-based file uploads. Today, we detected a number of new and very serious upload-related issues in the iOS8 gold master build.  For those of you unfamiliar with this term, “gold master” is generally the last build of an in-beta Apple product that will eventually become the officially released version.

We’ve compiled a list of the file-upload-related issues, by browser. The issues discussed here may appear in earlier iOS8 betas as well.  These new issues, coupled with existing issues in iOS browsers, make uploading files via your iPhone or iPad nearly impossible at this point.

Safari-only

New to iOS8:

Chrome & UIWebView

New to iOS8:

Safari, Chrome, and UIWebView

Existing:

With these outstanding bugs, File API support and file uploads are now completely broken in Safari.  In Chrome, video uploads are impossible, and image uploads only possible if the “multiple” attribute on the file input element is included.  In any app run inside UIWebView, all file uploads are possible, but only if the multiple attribute if left off of the file input element.

We have filed bugs with Apple and Google, but we encourage you to file issues as well.  It is critical that these issues are fixed before iOS8 releases to prevent a complete loss of browser-based file upload and file manipulation for mobile Apple device users.  This is not just a Fine Uploader issue.  Rather, it affects any browser-based applications that accept file uploads, manipulate, or read files client-side.

 

How We Are Dealing With This in Fine Uploader

Fine Uploader 5.0.5 includes a workaround for the browser-crash issue.  A workaround for the 0-sized video uploads has been a part of Fine Uploader for quite a while already, but, keep in mind, the workaround for the browser crash issue negates the 0-size video upload workaround in Chrome and UIWebView.

The bug in iOS8 Safari that prevents any sort of file uploads or file reading cannot be worked around.  Instead, we have added some code that identifies this browser and alerts users.  The alert explains the issue a bit, and asks users to switch to Chrome until Apple addresses the bug in iOS8 Safari.

All workarounds are now attached to options, and can be disabled by setting the corresponding flag to false.  See the new workaround option documentation for more details.  It is unlikely that you will ever want to disable these workarounds (as we intend to revert these workarounds once the corresponding browser bugs are fixed), but, just in case, this is possible.  Note that you can also customize the alert displayed to your users in iOS8 Safari by overriding the default text for the unsupportedBrowserIos8Safari message.

Update: September 18, 2014

The released version of iOS8 (8.0) contains all the bugs described above.  Workarounds and detection methods are present in Fine Uploader 5.0.5.

Update: September 24, 2014

Apple released a hotfix update today: 8.0.1.  This hotfix appeared to address the broken file input and File API in iOS8 Safari.  It also seemed to fix the long-standing issue that resulted in upload of 0-sized videos when the file input element contains a multiple attribute.  Sadly, 8.0.1 contained some other serious regressions that prevented some devices from obtaining cellular service.  As a result, Apple aborted the 8.0.1 update shortly after its release.  There is no known planned release date for 8.0.2, as Apple is unnecessarily secretive about dates (among other things).  Given the serious quality issues with the last two iOS releases, it seems likely that Apple will take a bit more time before releasing 8.0.2.  So, perhaps the release that addresses the issues described above could be weeks off, if not more.

 

Update: September 29, 2014

Apple released a hotfix update a couple days ago: 8.0.2.  This hotfix appeared to address the broken file input and File API in iOS8 Safari.  However, videos now cannot be uploaded successfully at all in Chrome.  We are considering an 8.0.2-targeted hotfix release for Fine Uploader that disables the workaround targeted at Safari for iOS 8.0.2 and up.  Unfortunately, iOS8 still has a number of serious bugs at this point.  You might want to encourage any of your users tied to Apple devices to stick with iOS7, or, better yet, iOS6.

Fine Uploader 4.2 Released!

Update: January 23, 2014 – 4.2.2 Hotfix Release

This hotfix release addresses the following issues:

  • None of the submitted files have a QUEUED status after uploading has started (#1104)

Update: January 16, 2014 – 4.2.1 Hotfix Release

This hotfix release addresses the following issues:

  • Drag and Drop Module: Exception when iterating over FileList in Safari. (#1100)

After a bit of a holiday hiatus, the Fine Uploader team is excited to release to you our latest version. It’s packed with features gathered from your suggestions and bug reports. Here are some notable additions that are part of the 4.2 release:

Features:

Serverless S3 Uploads

Fine Uploader 4.2 brings the ability to upload directly to Amazon’s S3 without the need for an intermediary signature server. That means you can enable file uploads for your users with just the a little bit of HTML and Javascript. Ray has developed a fully featured example, and an accompanying tutorial blog post that you should look at to get a taste of what is possible with this new feature. For more information on uploading to Amazon S3 with just Fine Uploader, see the documentation.

Get a Drop Zone From a File ID with the getDropTarget() API Method

This new UI only API method allows you to discover which drop zone element a specific file is associated with. Along with an API method, the processingDroppedFilesComplete event has an appended dropTarget parameter. As always, the documentation for the method and the drag and drop module have more details.

Get a File ID From an HTMLElement with the getId() API Method

Another new UI only API method — getId — has been added to aid in retrieving a specific file’s id when you know where it is in the DOM.

Support for Nested Dropzones

The allowance of nested drop zones supports workflows much like Dropbox UI where the entire container may be a drop zone, and rows within the container may be drop zones. The drag and drop documentation has more details to get you started.

Bug Fixes:

Other Improvements:

Next…

As always, for up-to-date information about features and fixes planned for the next release (4.3), please see the milestone in the Github issue tracker. We will begin to plan the 4.3 release shortly after this release of 4.2.

Thanks for being a part of Fine Uploader!

Fine Uploader has a new home

Recently, Andrew Valums and I handed Fine Uploader over to Widen Enterprises. Full Disclosure: Widen is my employer. Widen already uses Fine Uploader in their flagship digital asset management product, Media Collective, as well as their image management application, Smartimage. We felt that this was a good move, as Fine Uploader is becoming too much work for me to handle during my free time. This means that Fine Uploader will finally have a sustainable amount of resources (in terms of money, developers, QA, PMs, and cash) behind it. This will allow the library to grow much faster and in much more dramatic ways.

New Location

The Fine Uploader Github repo has moved to Widen/fine-uploader. The web page, blog, and twitter account will remain unchanged for now. If you have forked the old (valums/file-uploader) repo, please read this Stackoverflow case for an explanation of how you can update your cloned/forked copy of the repo.

New Licensing

Starting with Fine Uploader 3.3.1, the licensing has changed. Fine Uploader is now a GPL Version 3 licensed library. If the terms of GPL v3 do not work well for your organization, you may purchase a commercial license from Widen, which will release you from the terms of the GPL v3 license. From the downloads page, you can download a free 45-day trial of the commercially-licensed library, or you can download the GPL v3 version, or purchase a commercial license immediately. If you have already contributed to Fine Uploader in the past, you are eligible for a discount on the commercial license. Please send an email to licensing@fineuploader.com, along with proof of your past contribution, to obtain your discount.

Note that the server-side examples will continue to be attached to an MIT license, and has been moved to the Widen/fine-uploader-server repository.

Improvements

With a well-established company like Widen backing Fine Uploader, it will be possible to evolve the library at a much faster pace. In fact, all aspects of Fine Uploader will improve, including support, testing, development, feature planning, demos, and documentation. You will see a great number of changes/improvements to the library over the coming weeks, and development activity will increase in the near future.

You can follow the progress of Fine Uploader via the Twitter feed, as well as this blog. Support will continue to be handled on Stackoverflow (see the support page for more details). Bug/feature cases should be filed in the Fine Uploader issue tracker, while support requests belong in the support forum. You may send other general comments to info@fineuploader.com. Please do not post comments in the support forum, as these will be removed by Stackoverflow moderators.

regards,
Ray Nicholus and the rest of the team at Widen Enterprises