SLightS3 AWS S3 Upload Class Library

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.