HTML5 uploader now supports Amazon S3

On these weekends we have rolled out Upload Suite 8.5.33. It has a lot of improvements, but one of its most wanted features is Amazon S3 support.

For many of our customers a lack of direct Amazon S3 upload was a showstopper which prevented migration from Java uploader. The situation became really critical, because since early September, Java applets no longer work in Chrome at all. That's why we have worked hard and added this functionality to HTML5 uploader. 

Amazon S3 support

Our priority is to make the transition from Java/ActiveX uploader smooth, that's why we have kept the same API as used there. If you ever integrated the Java/ActiveX uploader with Amazon S3, you will find HTML5 uploader integration experience very familiar.

Moreover, we have analyzed your feedback regarding the use of this feature and extended the API. For example, we have added an ability to specify a storage class or send HTTP headers to manage the uploaded data (e.g. to control the caching policy). 

We have thought not only about the existing customers but also about the new ones. That's why we have seriously rewritten the Amazon S3 integration tutorial: 

and reworked demo applications 

By the way, you may wonder if Upload Suite can send files to other services through REST API. The good news is that if the service supports POST requests, the uploader is flexible enough to be able to send files there. It cannot send files through PUT requests yet, but if we get enough requests, we will add this feature as well.

amazon s3 

What is about other improvements? If you check out the change log, you will discover that Amazon S3 support is not the only new feature.

High quality image resizing

Java and ActiveX uploaders could resize images with great interpolation algorithms which return really smooth and artifact-free results. Before 8.5.33, HTML5 uploader could use the only resizing option offered by the standard canvas element.

Not all customers were happy with its quality of the canvas resizing. We even considered implementing the high-quality alogrithm in JavaScript ourselves, but fortunately we have encountered a great JavaScript library called Pica. We have integrated Pica with Upload Suite, and now you can configure the uploader to resize images with a high quality algortihm. Since it works slower comparing to a classic approach, we decided not to do it a default option, but you can turn it on with a single line of code.

Processing large output dimensions properly

Initially, we had several bug reports from customers who tried ot use the uploader on iOS devices. They reported that it produces "black rectangles" for photos taken on a device, but works well with small images.

It turned out that the Apple decided to prevent possible memory crashes on iOS devices by limiting maximum image size it can load through JavaScript by 5 Mpix (or 2 Mpix on old devices). The funniest part is that modern iOS devices produce 8 Mpix photos!

Fortunately, we have found a workaround - it turned out to be possible to load images by parts, say, 1000x1000 blocks. The only limitation - you cannot create images exceeding 5 Mpix. In this case you have two choices - the uploader can automatically reduce the output image dimensions or send the original file.      

After further research, we have discovered that some browsers have similar limitations as well. For example, Firefox is limited by 32 Mpix. So we have applied the same logic for those browsers as well. 

Invisible uploader

The standard uploader user interface is not always optimal. Sometimes you may prefer to hide it completely and create your own interface, processing the events from the uploader yourself. 

Before 8.5.33, you had to play with CSS. However it is not elegant solution at all - when you add files to the uploader, DOM elements for each item is still created (although it is invisible).

To avoid this, we have added an ability to completely hide all panels, including the upload pane. Now you can create a user interface like this: 

 Uploader with custom upload list

We are going to add a number of code examples to the next release. Meanwhile, if you are interested to create something like this and need our assistance, feel free to contact us at or create a support ticket.

* * * 

What's next? The only block of features from Java remained is advaned upload settings like chunk upload, MD5 hash, auto resume, etc. If you are going to upload very large files, you will definitely love the next release.

So, stay tuned!