Image Uploader 6 - Coming Soon

posted by Dmitry on 10 May 2009, 23:13

Started planning of new Image Uploader version we decided to focus on three goals: support of images of big size, usage simplicity, and wide support of browsers.

The first goal – support of big images – is the solution for well-known problem when Image Uploader was unable to create thumbnails for big images and sent icons instead. We realized that modern cameras increase megapixels from year to year and the problem became serious. Our development team had to reimplement image processing modules of both ActiveX and Java versions and as a result we have support of large images and have increased the quality of thumbnails.

The second goal – make Image Uploader easier to embed to customers’ solutions – required to survey what platforms were used by our customers. We found out that two of them – ASP.NET and PHP – form absolute majority. We implemented special solutions for each platform (Image Uploader ASP.NET control and Image Uploader PHP library) wrapping Image Uploader and allowing to use it in a straight forward way on a platform.

The third goal is support of modern browsers. In recent times several new browsers were released – Chrome and Internet Explorer 8. We made some efforts to test Image Uploader on these new ones and adapt the control to them. As a result Image Uploader supports these two browsers and Opera 9 additionally.

Here is the overall list of new features and improvements in Image Uploader 6.

Both ActiveX and Java Version Improvements

  • Three editions of Image Uploader are available: Express, Standard, and Professional.
  • Memory friendly image processing.
  • Image Uploader ASP.NET Control and Image Uploader PHP library solutions making Image Uploader usage easier on corresponding server platforms.
  • Support of cloud storages: Amazon S3 and Nirvanix. Now Image Uploader can upload files and metadata to these online storages.
  • Support of AJAX-enabled applications. Now visibility of Image Uploader can be handled via CSS.
  • The ability to customize POST request sent by Image Uploader was improved.
  • Image Uploader supports review of response sent by web server back in the ImageUploader.PackageComplete event.

ActiveX Version Specific Improvements

  • Support of Internet Explorer 8.
  • Support of new non-admin ActiveX controls feature in Internet Explorer 8.
  • New installation progress of Image Uploader ActiveX control.
  • Improved estimation of remaining upload time in the progress bar.
  • Refactored memory management. Several problems that could be potentially led to crash were found and fixed.
  • The problem when Image Uploader froze on “waiting for response from server” stage was resolved.
  • Fixed several problems with drag-and-drop functionality in upload pane.
  • Thumbnail in the progress dialog can be hidden now.
  • Fixed the problem when some methods and properties of Image Uploader became unavailable in the case when InitComplete event handler was specified.
  • Fixed several problems with saving and restoring of upload list.
  • A number of minor improvements and bug fixes.

Java Version Specific Improvements

  • Support of Chrome and Opera 9.
  • Improved quality of resize.
  • Increased speed of folders tree navigation.
  • Windows 2008 network shares are supported now.
  • Fixed the problem with proxies on Windows platforms.
  • Now files can be deleted after upload.
  • Now files can be deleted from folder pane.
  • Fixed the problem with checkboxes on Mac platform.
  • Fixed the problem with tree pane refreshing.
  • Fixed several problems with saving and restoring of upload list.
  • Fixed the problem with extracting of UserComment fields from EXIF.
  • Fixed the problem with deleting of temporary files created by Image Uploader.
  • A number of minor improvements and bug fixes.

Aurigma Flash/Flex experiments

posted by Alex on 14 April 2009, 18:00

Recently we have decided to widen our experience (and maybe products line) and to investigate new Flash/Flex platform. The task was to create file-upload solution with some client-side image processing. This post contains a summary of our experiments. However, I'm a full newbie in Flash/Flex, so feel free to add your notes and comments.

The beginning was great - I have just opened FlexBuilder and found many cool things. Stable and fast visual forms designer, easy-to-learn syntax, all major OOP concepts and even compile-time type checks. Oh, and of course - shaders! Really amazing stuff. However, after few days my impressions were not so bright. Why? Here the whole list of reasons.

Security restrictions

It is really a problem number one. As I was interested in upload functionality, I started with URLLoader class. It cannot post anything to server if this action is not initiated by user directly. Very reasonable. So, each time when you call URLLoader.load() you should have something like button click handler higher in stack. It prevents malicious apps from stealing user data. But...

There is another thing about Flash/Flex which you should know. It is event-driven platform with many asynchronous calls. E.g. if you want to load file - you should call FileReference.load() and wait for "complete" event fired by this object. If you want to load SWF movie or JPEG image - you should create Loader object, ask it to start processing and just wait for the event. Very simple! If you are not going to upload an image you have, to go to fullscreen or do anything else from the list of restricted actions. But if you are - you are in a big trouble. By the reason of the fact that "complete" event fired from another thread - there is no UIA (user-initiated-action) handler in stack and, hence, you have no permission.

Adobe docs says - "you should show message and ask user again". You have to ask, even if a user just clicked "Do this" button just because you have asynchronous call in the middle of your operation. Really annoying. Actually, I don't understand why a bad guy cannot show message and ask user some innocent question? User will give him a permit (why not, if question is innocent?) - and he will do his dirty business...

And there is also another bug with URLLoader - it doesn't fire progress event while uploading data from binary buffer. It is a known issue and I even voted for it. I would recommend you to do the same if you experience a similar problem.

So, URLLoader was evidently not the best choice. Next thing I tried to use was Socket. Yeap, it is not so easy to use, however, from the other hand it gives much more flexibility. Nevertheless, a few hours later it was evident that Socket is not the option at all because even if you are going to make uploads to the same domain where you host your SWF file you should have special policy server installed on the server. You cannot obtain permission policy from your HTTP server, no, only via special policy server...

Threads & Asynchronous calls

As I mentioned before - Flash/Flex is an event-driven asynchronous platform. But it doesn't support multithreading. Sounds strange, yeap? As far as I understand from blogs and forums - all ActionScript code is executed in a single thread. And asynchronous calls are just enqueued in some internal dispatcher. What does that mean? That it is simple to develop, it is hard to make a hardly-debuggable synchronization error. And this means, that you cannot run anything in background. There are workarounds which emulate "background processing", but they were not applicable in my case. Oh, I forgot to mention that shaders engine works in another thread, so if your task can be expressed in shaders programming language - you will be able to do it asynchronously and very-very fast. ;) Unfortunately, it isn't my case as well.

Summary

What do we have at the end? A very strange feeling. Get me right, I like Flash/Flex - it provides a bunch of great features, it allows to develop really fast, it works in a stable way... But sometimes it stalemates you, and you cannot do anything. Users will have nothing to do than bear user interface freezing or answer useless questions shown because of security restrictions in Flash.

It would be great to have the following things in the future:

  • Signed SWFs or any other mechanism to use instead of UIA concept. Or some mechanism which will allow passing UIA-permission via event chains.
  • Multithreading or at least something like yield() method.
  • Ability to work via sockets. At least with native domain. Without any "special server on XXX port", because it is not usable in real world with hosting providers, firewalls, and proxies.

Quick update for Image Uploader 5.5

posted by Dmitry on 12 September 2008, 22:41

Three weeks ago we released Image Uploader 5.5 (version 5.5.1). During these three weeks a lot of our customers upgraded to new version. We have good references for new Image Uploader, users say that we have success with version 5.5 and Image Uploader works faster and more stable.

Unfortunately the world is not ideal and several problems were found in 5.5.1. Today we are ready to release updated version 5.5.6 which fixes some of them:

  • Fixed the problem with custom buttons in ActiveX version.
  • Fixed the issue with thumbnail size when they are created with high quality in ActiveX version.
  • Fixed the problem with uploading icons instead of thumbnails for some images on Mac platform with Image Uploader Java.
  • Now methods GoToParentFolder and GoToPreviousFolder works correctly in Image Uploader Java.

 

Aurigma Image Uploader 5.5 is released

posted by Dmitry on 26 August 2008, 19:35

Done… Today we released new Image Uploader 5.5. I really like the days like this one when all tests already passed, you just need to compile installers, finally check source code in CVS and mark it with a tag. Actually we are late for 7 days, the previous release date was 20, August. But some of the customers who tested out beta version found problems with tumbnail generation. So we had to examine and fix it and then walk through the tests again.

It was long time without updates for Image Uploader. Some of you, our customers, were waiting for new version in hope that it fixes some basic problems in Java version. Now you can download it and install on your servers to try. We are open for your feedback.

You can read about new functionality and bug fixes included into Image Uploader 5.5 in my previous post.

Now we have got a Leopard!

posted by Fedor on 20 March 2008, 18:32

Hi All! 

I know that some of our clients have already upgraded their Mac OSes to Leopard. And some of these clients have already had some problems with Image Uploader running it on Leopard. Previously we had only Mac OS 10.3.4 and 1.4.something. Recently we have installed the third operating system on our pure Mac and now we can test it. If you have some problems specific for Leopard please, post your information to forum. Now we can check and fix it.