Upload components

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Upload components are software products which are designed to be embedded into a web site to add upload functionality to it. Upload components are designed to replace the standard HTML4 upload mechanism. Compared with HTML4, the upload components have a more user-friendly interface and support a wider range of features.

HTML file uploads[edit]

HTML4 standard supports posting data from a client computer to a server. This standard mechanism is HTML forms.[1][2] With HTML forms a user’s files can be uploaded by employing <input/> tag with different attributes. This method allows web site developers to implement basic upload functionality. However, it has the following disadvantages:

  • Multiple files upload is not available – a user can upload only 1 file a time.
  • Limited upload size as it is usually impossible to send files up to dozens of Mb via HTTP.
  • No optimization before uploading files is available.
  • Poor visualization – a user cannot see any information about the upload progress and estimated upload time.
  • Preview of selected files is not supported.
  • Awkward look and feel – the way a user selects files for upload is inconvenient.

HTML upload alternatives[edit]

Upload components allow for bypassing the HTML upload restrictions and disadvantages noted previously. An upload component is a plug-in which allows uploading files from a client to a server. Usually upload components are developed by third party companies and can be integrated with any website on any platform. The browser will display the embedded upload component as a part of the web page. Upload components can be built with various technologies: Flash, Silverlight, Java, ActiveX, HTML5. W3C Community is in process of developing HTML5 standard. The full specification is expected by 2014.[3] It is supposed to support multimedia content without any plug-ins or components. For upload functionality, new APIs [4] offer a wide variety of new features: access to the clients file system, dynamic request generating and processing of images. New HTML5 features can be a good basis for implementing upload component with sophisticated user interface and the ability to upload any amount of data. Unfortunately at the moment browsers support them partially and differently which is a serious obstacle. The situation becomes worse if we remember that a huge number of users still work on Windows XP (28%) [5] and obsolete Internet Explorer versions (11%).[6]

Technologies for creating upload components[edit]

Upload components can be developed on the basis of various technologies aimed at extending browser functionality. Depending on the technology and its features upload component can support more or less functionality, be more or less configurable and easier to use.

Technology Browsers OS Mobile OS Client software requirements
Java Applets Internet Explorer, Firefox, Chrome, Safari, Opera Windows, Mac OS X, Linux No support Java Machine
Flash controls Internet Explorer, Firefox, Chrome, Safari, Opera Windows, Mac OS X, Linux No support Flash Player
Silverlight Controls

Microsoft technologies are preferable

Internet Explorer, Firefox, Chrome, Safari, Opera Windows, Mac OS X, Linux (Moonlight) No support Silverlight plug-in
HTML5 controls Chrome, Firefox, Opera, Safari, Internet Explorer,

Limited support

Windows, Mac OS X, Linux iOS, Android, Windows Phone 7,

Limited support

HTML5 compatible web browser
ActiveX controls Internet Explorer Windows no support Internet Explorer

Java[edit]

Java Applets are components running in a web browser. They are developed in the form of Java byte code. The applets are supported in most modern operating systems and browsers. Java applets have high performance similar to native installed software. Java applets are signed with security certificates to become trusted software, which allows automatic redistribution from a web site and installation on client computers.

Flash[edit]

Upload components can be implemented as Flash controls. Flash is a framework for running rich-media applications on the Internet. 24% of all web sites use Flash components,[7] and the Adobe Flash player is installed on 99% of Internet-enabled PC’s.[8] Flash is a cross-platform and a cross-browser technology which allows Flash upload components to work in various browsers, with the exception of mobile platforms.

Silverlight[edit]

Another type of upload components is Silverlight which is Microsoft technology requiring a browser plug-in to be installed. In features it is very similar to Adobe Flash and it is supported in most modern browsers and operating systems. There are versions of Silverlight for Windows and Mac OS X, there is also a version for Linux called Moonlight. Silverlight is one of the basic technologies used for Windows Phone applications development.

HTML5[edit]

HTML5 is a new HTML standard developed to add multimedia support to HTML. It is supported on Windows, Mac OS X, Linux, iOS, Android, and Windows Phone. Since the format is still under development and some of the features employed for uploading files are still not part of the standard, HTML5 upload components are not common at the moment. Their support is restricted to a subset of browsers and their versions.

Desktop browsers HTML5 support[edit]

HTML5 support has been steadily improving. The best coverage of HTML5 features is provided by the latest version of Chrome, Firefox, Safari and Opera. Internet Explorer provides the least support. Upcoming Internet Explorer 10 will have less support than current versions of other browsers; however the coverage will be twice as good as Internet Explorer 9.

Mobile platforms HTML5 support[edit]

iOS 5 has a sufficiently high level of HTML5 support, however its level of support remains lower than desktop browsers. Windows Phone 7.5 Mango has slight support for HTML5 which makes it comparable to desktop Internet Explorer 9’s lack of support for the standard. The latest Android 5.0 supports many more HTML5 features than Windows Phone, but less than iOS. Mobile browsers’ HTML5 support remains a work in progress.[9][10]

Features which are not possible with standard HTML4 upload[edit]

Upload components bring additional features and user experience which cannot be provided by pure HTML4.

Progress bar
Progress bars are used to inform users about upload process details. Upload components support progress bars displaying such parameters as file names, file sizes, upload speed, etc.
Multiple files and folder upload
Some websites require support for uploading multiple files at once. This feature is extremely important for upload components on social networks, photo galleries, file sharing, etc. The standard HTML4 approach is cumbersome. Upload components support multiple file uploads in more flexible fashion, for example by allowing simpler selection of files to upload simultaneously from several folders.
Huge files upload
Uploading a huge amount of data is always a problem as the request size can be too large to successfully complete the upload process or slow or unstable Internet connections can interfere. On the server side there can be restrictions applied to the maximum size of HTTP requests. Upload components have to find a balance between the client’s needs on one hand and server and channel resources and restrictions on the other. In the case of delivering huge files to server components so called Chunk upload[11] divide a file into several parts (chunks) before the upload process starts. Each chunk is sent in a single request; after all of them arrive at a server the original file is reassembled.
Fail-safe upload
During an upload process some unexpected problems or malfunctions can occur, leading to upload failure and file corruption. To address these problems upload components have fail-safe mechanisms sporting features such as automatic resumption of the upload process, sending files individually in a single package, chunk uploads.
Sending additional data along with files
Sometimes it is useful to send additional data along with a file, such as informational descriptions or Exif/IPTC fields, or Hash sums to identify whether a file was corrupted or damaged during the upload process.
Concurrent upload
Upload components can have a concurrent upload feature – sending upload packages in multiple threads. In some cases the upload process benefits by increasing overall upload speed, decreasing upload time and using computer resources in a more effective way.
Instant upload
This approach allows the upload of files to start right after they are added to an upload queue.
Upload to cloud storages
Upload components can upload files to cloud storages.
Drag-n-Drop
Drag-n-Drop is a form of user-program interaction which is selecting one object and dragging it onto another object. Drag-n-Drop is widespread as it helps to increase program usability.
Customizable Appearance
Upload components support customizing the appearance to fit into a web site design through such configurations as font styles, sizes, colors, or view modes among others.
Localization
Once an upload component enters the international market, it needs support translating the interface to other languages. Usually upload components have configurable support for the most widely used languages. The user interface can also be multilingual. For some languages such as Hebrew the localization process contains not only translation, but switching to right-to-left look and feel.
Client-side files validations
To save server-side resources upload components can apply client-side validation to files selected for upload in several groups: file types (which can be selectively defined or barred by the developer), file size (which can be set to minimum/maximum allowed sizes), and image size (which can have minimum/maximum sizes configured among other parameters).

Image upload[edit]

Upload components are used for uploading images, so there are components that have additional features for image pre-upload processing.

Resize
Photos taken with modern digital cameras come up in high resolution, but most websites need the images resized to conserve bandwidth. Upload components allow images to be automatically resized and uploaded with or without the original file, or a thumbnail copy for use as an avatar, etc.
Rotate
Image rotation is a very important feature for web sites giving users basic image editing abilities. Images are either automatically rotating (based on Exif data) or allowing the user to manually rotate the image.
Crop
Crop allows users to select an image portion that should be stored somewhere or printed. Crop involves removing the image’s outer parts in order to highlight some object on an image or change the aspect ratio.
Watermarks
A watermark is a text message or image put over an original image and is used to protect intellectual property or specify important information such as date when the image was taken, text comments, copyright. Upload components can include a feature to add watermarks to all uploaded images.
Exif/IPTC metadata
Images can contain metadata in various formats, e.g. Exif or IPTC. Exif fields include information from the device that captured an File: camera parameters, date and place where an image was taken, exposure, lens parameters, GPS data, and others.[12]

IPTC fields contain more specific data relating to authorship of an image.[13] It is extremely important for upload components to preserve original image metadata in the upload process.

Quality Meter
Quality meter is a visual indicator showing image quality (dpi, width, height) and it helps a user to decide whether an image is good enough to use. An example of Quality meter usage can be a photo printing web site with a built-in upload component that notifies users if an image resolution is not enough to be printed in a selected format.

Upload components and supported features[edit]

Product name Technologies Free/Commercial API (client/server) Availability of source code Image thumbnails in file list Customization, localization Drag-n-drop support Client-side pre-upload file checks Upload of additional data Chunk upload
SWFUpload[14] Flash free client Yes No No No Yes Yes No
JumpLoader[15] Java Applet free, commercial client, server Yes Yes Yes Yes Yes Yes Yes
PowUpload .NET control[16] ASP.NET Control commercial server Yes No No No No No No
JavaPowUpload[16] Java Applet commercial client, server No Yes Yes Yes Yes Yes Yes
ActiveXPowUpload[16] ActiveX Control commercial client, server No No Yes Yes Yes Yes No
MultiPowUpload[16] Flash commercial client Yes Yes Yes No Yes Yes No
Ultimate Uploader[16] Silverlight commercial client, server No Yes Yes Yes Yes Yes Yes
Silverlight File Upload[17] Silverlight free client, server Yes Yes No No Yes No Yes
Upload Ease[18] Java Applet commercial client No Yes Yes Yes Yes No No
Q-Image Uploader[19] Flash commercial client No Yes Yes Yes Yes Yes No
Ascend Uploader[20] Flash, ASP.NET Control commercial server No No Yes No Yes No No
JFileUpload[21] Java Applet commercial client Yes Yes Yes Yes Yes Yes Yes
Plupload[22] Flash, Silverlight, Gears, BrowserPlus, HTML 4/5 free, commercial client, server Yes No Yes Yes Yes Yes Yes
MyUploader, MyFTPUploader, MyDownloader, MyFileDownloader[23] Java Applet commercial client, server Yes Yes Yes Yes Yes Yes No
Image Uploader[24] Flash free, commercial client No Yes Yes No No Yes No
FileUp, XFile[25] ASP.NET Control, ActiveX Control commercial server No No Yes Yes No Yes No
Xceed Upload for Silverlight[26] Silverlight commercial client, server Yes No No No No No Yes
Aurigma Upload Suite[27] Java, ActiveX, Flash, HTML5 commercial client, server Yes Yes Yes Yes Yes Yes Yes
Uploadify, Uploadyfive[28] Flash, HTML5 free, commercial client, server Yes No Yes Yes Yes Yes No
Product name Client-side ZIP compression Folder upload Instant upload Concurrent upload Client-side image resize/rotate Client-side crop Client-side Watermarking Working with Exif/IPTC Fail-safe upload
SWFUpload[14] No No Yes No Yes No No No Yes
JumpLoader [15] Yes Yes Yes Yes Yes Yes Yes Yes Yes
PowUpload .NET control[16] No No No No No No No No Yes
JavaPowUpload[16] No Yes Yes No Yes Yes No Yes Yes
ActiveXPowUpload[16] No Yes No No No No No No Yes
MultiPowUpload[16] No No No No Yes Yes No Yes Yes
Ultimate Uploader[16] No No Yes Yes Yes No No No Yes
Silverlight File Upload[17] No No No Yes Yes No No No Yes
Upload Ease[18] Yes Yes No No Yes No Yes No Yes
Q-Image Uploader[19] No No No No Yes No Yes Yes No
Ascend Uploader[20] No No Yes No No No No No No
JFileUpload[21] Yes Yes Yes No Yes No Yes Yes Yes
Plupload[22] No No No No Yes No No No No
MyUploader, MyFTPUploader, MyDownloader, MyFileDownloader[23] Yes Yes No No Yes No No No No
Image Uploader[24] No No Yes No Yes No No No No
FileUp, XFile[25] Yes No No No No No No No Yes
Xceed Upload for Silverlight[26] Yes Yes No No No No No No No
Aurigma Upload Suite[27] Yes Yes Yes Yes Yes Yes Yes Yes Yes
Uploadify, Uploadyfive[28] No No Yes No No No No No No

References[edit]