topical media & game development

talk show tell print

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.