Image Uploader consists of several tiers. The figure below illustrates how the Aurigma upload technology is organized. This architecture affords its compatibility with any browsers (IE, Mozilla, Safari, Chrome, etc) and server platforms (ASP.NET, PHP, JSP, Ruby, ASP, etc). Let's examine elements of Image Uploader SDK.

ActiveX Control and Java Applet
Initially Image Uploader was developed as a visual ActiveX control, a technology that is embedded in an HTML page through the OBJECT tag. It displays folders and files on user's computer. Users select files they intend to send to your website, and when they click the Upload button, the ActiveX control sends HTTP POST request in multipart/form-data format described by RFC1867 to a URL you specify.
Since ActiveX controls can be loaded only in Internet Explorer, we have created its sibling in Java applet form. It works in the same manner, and can be loaded in all browsers which support Java Runtime Environment 1.5 or higher. Basically, ActiveX and Java have the same set of features, although there are some differences caused by different platform implementation (performance, appearance, etc).
Both ActiveX control and Java applet have rich APIs which enable dynamic configuration, upload progress tracking, flexible file handling, and other benefits.
JavaScript Helper Library
The diversity of internet browsers makes compatibility a challenge. Combining ActiveX and Java in an upload solution can require different code versions for each browser. Likewise, since browsers embed Java applets in different ways, you have to write different versions of HTML code for, say, Mozilla and Safari. Obviously, it is very inconvenient to maintain several versions of the same code.
Fortunately, Image Uploader SDK has an additional tier on top of ActiveX control and Java applet. There is a special JavaScript helper library that takes care about difference of browsers. Once you initialize JavaScript objects with Image Uploader settings, the helper library automatically determines whether to load ActiveX or Java and generates right code for the appropriate browser. This makes working with Image Uploader API absolutely transparent - no need to bother yourself with browser differences!
But unification of a client platform is not the only thing this library is useful for. It also simplifies configuration of certain settings, such as upload to cloud storages (like Amazon S3), or translation of the user interface to various languages.
Server Side Libraries
ActiveX control/Java applet and JavaScript library work solely in browsers. Therefore when you integrate them into your website, you interpret them as pure client-side software. Image Uploader sends a POST request with files to a page you specify in settings, and you write code that saves files to a server yourself. A big advantage of this approach is that you can easily use Image Uploader with any HTTP-compliant server. Your website can be written using ASP.NET, PHP, ColdFusion, Ruby, Perl, or any other server script language.
Although parsing POST requests and saving uploaded files on a server are easy in most scripting languages, there is a room to reduce routine coding. That's why Image Uploader SDK features one more tier - server-side libraries for two of the most popular server platforms: ASP.NET and PHP.
For ASP.NET developers we wrapped Image Uploader into a special ASP.NET control. It makes upload functionality development simple for all developers familiar with the Microsoft approach. You can insert and configure Image Uploader with a page right through Visual Studio. Also, it highly streamlines server-side upload processing code development, reducing the number of lines of code you have to write by several times!
We offer a similar solution for PHP developers. Although it is not integrated with any IDE, the PHP library allows you to write code using PHP-centric approach. And of course, the amount of code is significantly smaller compared to the upload processing of a POST request.