SlickUpload 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.
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.
|