Silverlight file uploader that supports multi-file upload, resize images before upload with image thumbnail, individual progress and overall progress indicator, fast upload, ASP.NET server control, and is highly customizable.
Use this Silverlight File Uploader in silverlight projects or directly on ASP.Net pages with the included server control.
Differences from other upload controls
- Fast! Does not use webservices to upload the file. This is slower because each file chunk must be uploaded to the webservice and then return before another chunk can be uploaded, or if chunks aren't used then only small files can be uploaded.
- Large files can be uploaded. The developer has the ability to limit file size, and total upload size, and is not limited to the maxRequestLength in the web.config. The upload control uploads files in chunks, but are much larger chunks than a webservice would use, the default is 4Mb which is the default maxRequestLength, but can be much larger (I would recomend around 25-30Mb). This way the maxRequestLength can be kept small to avoid denial of service attacks, but still upload large files and avoid possible buffer overuns.
- Files can be resumed. Also detects if a file by the same name has already been uploaded and asks if the user wants to overwrite it.
- Images (only jpg) can be resized before upload (thanks to fluxcapacity http://fluxcapacity.net/open-source/).
- Thumbnails can be displayed for images (jpg and png for now).
- Select multiple files to upload. Remove one file or the entire list.
- Turn off mutiple uploads so user can only select one file.
- Restrict the type of files users are able to select with a filter.
- View upload progress of individual files and entire process.
- Asynchronous upload, gui remains usable.
- Upload multiple files concurrently.
- Set the chunk size to upload.
- Set the maximum total upload size allowed to upload and the maximum file size to upoad.
The source has the silverlight source, server control source, and example source. There are also test solutions included. Right now there is only a basic example, but I may add more complex examples. I have tested this on IIS 6 but not in a production invironment and should be considered a beta.
I wanted to add some comments to the code and organize it better before I published it, but I'm not sure when I would get to it. So I'll just put it out there.
Please feel free to make comments or suggestions.
I've added an example using PHP, get it here
If you would like to support the development of this control, you may donate