SLightS3 is a first of its kind Silverlight class library that allows efficient
client based large file uploads to Amazon’s S3 service without the need to upload to a proxy
server. SLightS3 uploads directly to the S3 bucket you specify and utilizes an
event model allowing you to report upload progress back to your users.
SLightS3 makes use of streams so whether you're uploading a tiny text file
or a 3 gigabyte archive, the entire file will never be cached into memory.
The class libary can be included in your Silverlight 4 project and integrated
with your own user interface. Display your upload progress the way you
want to display it and keep your users updated with step by step events that
leverage the traditional .NET event model. Uploads are handled
asynchronously, meaning the upload does not block your UI.
Security Note: For security purposes SLightS3 does not store your secret
key or calculate the signature used for the upload. Instead it exposes a
read only UnsignedPolicy property giving you access to the raw policy text which
you then sign and pass back unto the SLightS3 upload component via the write
only SignedPolicy property. More information and example code for
signing your policy document can be found
here.
New in version 1.3.5 - The new features and updates are
listed beneath the Key Features section below.
Supported Platform: Silverlight 4
Key Features
- Upload directly to your S3 bucket.
- Custom keys allow you to specify the file name to be used with the S3 account
- Add custom meta-data to your upload to be included with S3's meta information
- Choose from S3's default ACL's:
- Private (default)
- Public Read
- Public Read/Write
- Authenticated Read
- Bucket Owner Read
- Bucket Owner Full Control
- Customize the expiration for each S3 upload request
- Use SSL to upload to your S3 bucket
- Retrieve the file name and size before uploading
- Handle events for the uploader including:
- Upload started
- Upload progress changed
- Upload completed
- Upload cancelled
- New properties available:
- IsUploading - Determine if the libary is currently uploading data.
- BytesWritten - Number of bytes written for the current request.
- TotalBytes - Total number of bytes for the current request.
- Observable properties updated through INotifyPropertyChanged. The above 3
new properties implement this.
- More efficient progress updates by limiting the frequency of fired events.
- OverrideBuffer method that can be used to set your own buffer size and event
frequency.
- LoadFromFileStream method that allows you to load your own file and pass the
resulting stream to the upload library. This is useful if you want to
generate thumbnails for images and display them prior to uploading or if you
want to generate your own data stream.
Version 1.3.5 has just been released. The technical documentation has been
updated to reflect the new changes. New features include:
- Fixed bug that incorrectly reported BytesWritten during upload progress.
- Fixed bug that incorrectly set Meta Data headers and caused S3 Signature to be
invalid.
- NEW FEATURE: Cache-Control header now supported.
- NEW FEATURE: Expires header now supported.
- NEW FEATURE: Assembly now signed with a strong name key to allow use in
Out-Of-Browser applications.
- NEW FEATURE: OnUploadException event added as a trap point for upload failures.