This release is one of the largest updates in Upload Suite history - it includes more than 40 improvements. The jewel in a crown is an ability to upload really large files (gigabytes) by splitting them into smaller chunks. However it is not the only improvement.
Until now, the chunk upload is the last large feature of ActiveX/Java uploader which was not available in HTML5 uploader. To add this feature, we had to rewrite the upload management module completely. That's why it took much longer than we expected to roll out this release.
However these delays were paid off completely. In addition to chunk upload functionality, new uploader now allows:
- Automatically restoring broken uploads. It is very useful with chunk uploads - if you have uploaded 900MB of 1GB and the connection interrupted, you will continue from 901th MB, rather than re-upload the whole file.
- Uploading all files in a single POST request (
filesPerPackage
param) - very convenient when you upload few files along with a HTML form.
- Sending MD5 fingerprint along with files. You can use it to determine whether such file already exists on the server (see demo).
- Renaming files and changing a folder structure in JavaScript before uploading files.
The API members and POST variable names are the same as we used in Java/ActiveX uploader, so if you are migrating, it should be no problems to start using HTML5 uploader.
However, the improvements are not limited with the upload management module. If you look into the change log, you will discover a number of other features. Let's overview them as well.
IPTC support
HTML5 uploader now handles metadata much better than earlier. In addition to improved support of EXIF, we have added an ability to work with IPTC metadata. Like EXIF, it can be extracted or preserved in a thumbnail. You won't lose copyright data and other important details embedded by your photographers into photos.
Besides of IPTC, you can preserve color profiles embedded into photos, as well as extract new EXIF fields (in particular, metadata specified by a user in Windows Explorer).
Smart resize - limit the output size
As you know, the uploader allows creating and uploading thumbnails. You can specify dimensions and JPEG quality and the uploader "converts" a photo using these settings.
But what if you don't care about the thumbnail quality (within reasonable limits of course) and you are rather concerned about the file size? For example, you want the thumbnail size to be predictable, say, never exceed 10KB.
With the new version, this problem is solved very easily - you just set a new converter option called thumbnailSizeLimit
. The uploader will try to pick the JPEG quality to meet this limitation. Of course, you don't want it to use too poor quality, so you can also set a minimum acceptable JPEG quality value.
Thumbnail file type
Now you can control whether to create JPEG or PNG thumbnails. Or, whether to preserve the original file type if possible.
Also, you can use it with combination with the smart file size feature described above - it may try to check whether PNG version of thumbnail meets the file size limitation. If it does not, it will proceed with JPEG.
Struggling with large images
JavaScript was not designed for handling large images. You cannot control memory management. Too many things are hidden "under the hood" - you have to rely on the browser vendor when decoding JPEG or manipulating image data.
On the other hand, every year the photos created by cameras grow. You have to deal with JPEGs of 20MB and even larger! For example, one of the customer have sent us a 17717x11811 photo. If you just try to display it in Chrome, it shows the "Oh, Snap" message and stops working. Fortunately, we have found out how to read this image piece by piece and now the uploader can resize it.
Unfortunately, it is not a universal solution. You may always find an image which is too large for a particular computer. If you ever received empty black images from your customers instead of photos, you know what I am talking about. The problem is when you process an image and the machine runs out of memory, JavaScript won't throw any exception. Instead, it just returns an uninitialized image (usually, black transparent pixels). The only way to determine it is checking pixels whether non-empty pixels exist there.
In 8.5.49 we have added an ability to verify images generated by converters. You can configure an amount of attempts it should do to create an image. When all attempts fail, the uploader considers that it tries to resize a "non-image". For this case, you can configure a fallback converter - for example, upload the original image instead of thumbnail.
In addition to these features, we have added a small improvement - if a converter is configured to create small previews (say, 120x120), it will try to use EXIF preview instead of resizing the original image. This way it will process the image very quickly, even it is 20MB+ JPEG.
All these improvements should significantly increase the stability of the upload and image resizing process, and make the upload of "black squares" almost impossible.
Improved cropping tool
Many customers find the built-in cropping tool an important part of the uploader. That's why we have improved it:
- Now it is touch-friendly. Your users can change the cropping frame on a mobile device.
- Also, it supports a keyboard. Use Tab to switch between buttons, arrow keys to move the cropping frame and Alt+arrows to resize it, Shift to boost it up.
- The viewport size now can be increased or decreased through the uploader settings.
- The crop dialog may be completely customized. You can just get the HTML element with the viewport and create the remaining user interface yourself.
Check out the unofficial demo page for a custom cropping tool dialog
Ability to create fully custom user interface
The cropping tool is not the only part of the user interface you can customize. You can also completely redesign the user interface - instead of the old good thumbnail bucket you can create Facebook-style photo management interface with different fields, textboxes, dropdown lists per each file, etc.
Strictly speaking, you were able to do it with older versions as well, however in this version we have added an ability to add files to the upload list from any sources (e.g. external drop zone), and now you can implement any upload interface.
To avoid additional release delays, we decided not to include new code examples to this version. If you are interested to see some examples of custom interfaces, feel free to contact us at info@aurigma.com.
* * *
Of course, it is not the complete list. For full details as well as for a technical information (exact settings names, etc), feel free to refer the change log. Meanwhile, if you have any questions regarding this release or Upload Suite in general, I will be happy to reply you at info@aurigma.com.