2/3/2015 4:18:34 PM

This code is C# .NET and can be used to upload a file on your local machine to an AWS S3 bucket.

*Requires Nuget Package "AWS SDK for .NET" (code below uses v.

* AWS S3 Service Urls: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region


string accessKey = "YOUR ACCESS KEY";
string secretAccessKey = "YOUR SECRETY KEY";
string filePath = "C:\\Projects\\Testing\\Temp Files\\test.jpg";
string s3Bucket = "your.bucket.name/subdirectory-if-needed";
string serviceUrl = "http://s3-external-1.amazonaws.com";  //N. Virginia service url         
string newFileName = "test-" + DateTime.Now.Ticks.ToString() + ".jpg"; //new filename in s3, optional

//create aws object
MyUtilities.AWS.S3 s3 = new MyUtilities.AWS.S3(accessKey, secretAccessKey, serviceUrl);

s3.UploadFile(filePath, s3Bucket, newFileName, false);


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyUtilities.AWS
    public class S3
        Amazon.S3.AmazonS3Client S3Client = null;

        public S3(string accessKeyId, string secretAccessKey, string serviceUrl)
            Amazon.S3.AmazonS3Config s3Config = new Amazon.S3.AmazonS3Config();
            s3Config.ServiceURL = serviceUrl;

            this.S3Client = new Amazon.S3.AmazonS3Client(accessKeyId, secretAccessKey, s3Config);

        public void UploadFile(string filePath, string s3Bucket, string newFileName, bool deleteLocalFileOnSuccess)
            //save in s3
            Amazon.S3.Model.PutObjectRequest s3PutRequest = new Amazon.S3.Model.PutObjectRequest();
            s3PutRequest = new Amazon.S3.Model.PutObjectRequest();
            s3PutRequest.FilePath = filePath;
            s3PutRequest.BucketName = s3Bucket;
            s3PutRequest.CannedACL = Amazon.S3.S3CannedACL.PublicRead;

            //key - new file name
            if (!string.IsNullOrWhiteSpace(newFileName))
                s3PutRequest.Key = newFileName;

            s3PutRequest.Headers.Expires = new DateTime(2020, 1, 1);

                Amazon.S3.Model.PutObjectResponse s3PutResponse = this.S3Client.PutObject(s3PutRequest);

                if (deleteLocalFileOnSuccess)
                    //Delete local file
                    if (System.IO.File.Exists(filePath))
            catch (Exception ex)
                //handle exceptions