Krystalware
Overview Technology Demos Download Documentation Purchase Forums

SlickUpload logoSlickUpload Technology

SlickUpload is built around several standard technologies to provide the most stable, powerful, and scalable solution possible.

Standard HTTP Uploading (RFC 1867)

The current HTTP upload standard was created by RFC 1867, "Form-based File Upload in HTML". It specifies the behavior of a new input element type, "file". This is the standard text box with browse button element that allows the user to pick a file. It also adds the "multipart/form-data" form enctype. When this encoding is selected for a form, the POST request is sent in a Multipart MIME (RFC 1521 ) encoded format instead of using the normal form POST method, allowing for bigger chunks of data (and binary data) to be sent. This combination of features allows files to be uploaded from a standard web browser.

Multipart MIME (RFC 1521)

This standard defines a method of encoding multipart, possibly binary, messages into ASCII text. It uses Base64 encoding to allow representation of binary data as ASCII characters. SlickUpload contains an internal fast forward-only MIME parser that allows it to efficiently receive a MIME encoded stream.

AJAX (Asynchronous Javascript and XML)

SlickUpload uses AJAX technologies to provide a smooth, rich progress bar that doesn't flicker as an upload progresses. Instead of reloading the whole page every time an update is needed, it sends a small out of band request to the SlickUpload server module and gets a snippet of XML in response. This allows the progress bar to be updated in a smooth, flicker-free way. SlickUpload provides a very flexible progress architecture that allows templating of any part of the upload progress bar, as well as the capability to write a totally custom progressbar.

ASP.NET Request Pipeline

SlickUpload is built using pure managed code. As such, it must be able to hook into the standard ASP.NET request pipeline. It does this by using an HttpModule . It hooks into the pipeline just before a page would normally get executed and intercepts the stream of data coming in. This is what allows SlickUpload to bypass the standard ASP.NET behavior of loading requests into memory and instead stream the upload directly to a location such as a file or database.