topical media & game development
mashup-amazon-15-Amazon-S3-Default.aspx.cs / cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using com.amazonaws.s3;
public partial class _Default : System.Web.UI.Page
{
public string myAWSAccessKeyId = "[YOUR ID HERE]";
public string mySecretAccessKeyId = "[YOUR SECRET ID HERE]";
protected void cmdSubmit_Click(object sender, EventArgs e)
{
if (myFileUpload.HasFile)
{
MyPrint("Server received " + myFileUpload.FileName);
MyPrint("Attempting to save to S3");
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
// Create a signature for this operation
string strMySignature = S3Helper.GetSignature(
mySecretAccessKeyId,
"PutObjectInline",
myTime);
// Create a new Access grant for anonymous users.
Grant myGrant = new Grant();
Grant[] myGrants = new Grant[1];
// Setup Access control, allow Read access to all
Group myGroup = new Group();
myGroup.URI = "http://acs.amazonaws.com/groups/global/AllUsers";
myGrant.Grantee = myGroup;
myGrant.Permission = Permission.READ;
myGrants[0] = myGrant;
// Setup some metadata to indicate the content type
MetadataEntry myContentType = new MetadataEntry();
myContentType.Name = "ContentType";
myContentType.Value = myFileUpload.PostedFile.ContentType;
MetadataEntry[] myMetaData = new MetadataEntry[1];
myMetaData[0] = myContentType;
// Finally upload the object
PutObjectResult myResult = myS3.PutObjectInline(
txtBucketName.Text,
txtKey.Text,
myMetaData,
myFileUpload.FileBytes,
myFileUpload.FileBytes.Length,
myGrants,
StorageClass.STANDARD,
true,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
strMySignature, null
);
// Print out the results.
if (myResult != null) MyPrint("ETag: " + myResult.ETag);
}
}
protected void cmdShowTime_Click(object sender, EventArgs e)
{
DateTime myTime = DateTime.Now;
MyPrint("Current TimeStamp = " + S3Helper.FormatTimeStamp(myTime));
}
protected void cmdShowSignature_Click(object sender, EventArgs e)
{
DateTime myTime = DateTime.Now;
MyPrint("Signature Digest = " + S3Helper.GetSignature(this.mySecretAccessKeyId, "ListAllMyBuckets", myTime));
}
protected void cmdListBuckets_Click(object sender, EventArgs e)
{
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
Lists all buckets under this user
ListAllMyBucketsResult myBuckets = myS3.ListAllMyBuckets(myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
S3Helper.GetSignature(mySecretAccessKeyId, "ListAllMyBuckets", myTime));
lblBuckets.Text = "<b>My Buckets</b><br/>";
foreach (ListAllMyBucketsEntry b in myBuckets.Buckets)
{
lblBuckets.Text += (b.Name + ", created " + b.CreationDate + "<br/>");
}
}
protected void cmdCreateBucket_Click(object sender, EventArgs e)
{
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
try
{
CreateBucketResult myCreateResult = myS3.CreateBucket(txtBucketName.Text, null,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
S3Helper.GetSignature(mySecretAccessKeyId, "CreateBucket", myTime));
MyPrint("Bucket successfully created.");
}
catch (Exception ex)
{
MyPrint("CreateBucket Error: " + ex.Message);
}
}
void MyPrint(string strMsg)
{
lblResults.Text += strMsg + "<br/>";
}
protected void cmdDeleteBucket_Click(object sender, EventArgs e)
{
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
try
{
Status myDeleteResult = myS3.DeleteBucket(txtBucketName.Text,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
S3Helper.GetSignature(mySecretAccessKeyId, "DeleteBucket", myTime), null);
MyPrint("Bucket successfully deleted.");
}
catch (Exception ex)
{
MyPrint("DeleteBucket Error: " + ex.Message);
}
}
protected void cmdShowContents_Click(object sender, EventArgs e)
{
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
string strMySignature = S3Helper.GetSignature(
mySecretAccessKeyId,
"ListBucket",
myTime);
ListBucketResult myResults = myS3.ListBucket(
this.txtBucketName.Text,
"",
"",
0,
false,
"|",
myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
strMySignature,
null);
// Iterate through the bucket contents
if (myResults.Contents != null)
{
lblResults.Text = "<table>";
foreach (ListEntry myEntry in myResults.Contents)
{
lblResults.Text += "<tr><td>";
lblResults.Text += "<img src=https://s3.amazonaws.com/" + txtBucketName.Text + "/" + myEntry.Key + " width=100px><br/>";
lblResults.Text += "<a href=https://s3.amazonaws.com/" + txtBucketName.Text + "/" + myEntry.Key + " target=_blank>" + myEntry.Key + "</a>";
lblResults.Text += "</td></tr>";
}
lblResults.Text += "</table>";
}
else
{
MyPrint("Bucket is Empty");
}
}
protected void cmdDeleteFile_Click(object sender, EventArgs e)
{
AmazonS3 myS3 = new AmazonS3();
DateTime myTime = DateTime.Now;
string strMySignature = S3Helper.GetSignature(
mySecretAccessKeyId,
"DeleteObject",
myTime);
Status myResults = myS3.DeleteObject(
this.txtBucketName.Text,
this.txtKey.Text,
myAWSAccessKeyId,
S3Helper.GetTimeStamp(myTime),
true,
strMySignature,
null);
MyPrint("Delete successful: " + myResults.Code + ", " + myResults.Description);
}
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.