NETS3






4.75/5 (4 votes)
NETS3 is an Open Source tool built using .NET technology for accessing Amazon S3 content.
1.0 Introduction
NETS3 is an Open Source application built using the Microsoft .NET technology. This application provides access to S3 contents in an easy and user friendly manner. Users are free to use the application as well as the source code as per their needs/ requirements. Feel free to report any changes, feedback, or bugs at ak.tripathi@yahoo.com with subject line NETS3.
2.0 Background
Nowadays Amazon Cloud has become a very popular place for storage. Storing any content on the cloud helps us overcome data management issues. This application may be used for easier access to the cloud and for basic learning about Amazon S3.
3.0 Using the code
- Download NETS3 source code
- Search and double click the NETS3.sln file
- Hit the F5 button to run as well as debug the application
3.1 How to get all the buckets
private DataTable GetAllBuckets()
{
DataTable buckets = new DataTable();
try
{
using (AmazonS3Client _s3Client =
new AmazonS3Client(SessionManager.AccessKeyId,
SessionManager.SecretAccessKeyId))
{
ListBucketsResponse response = _s3Client.ListBuckets();
buckets.Columns.Add(new DataColumn("Name"));
buckets.Columns.Add(new DataColumn("CreationDate"));
DataRow row;
//Loop through the records obtained to create a data table
foreach (S3Bucket bucket in response.Buckets)
{
row = buckets.NewRow();
row[0] = bucket.BucketName;
row[1] = string.Format("{0:dd-MMM-yyyy hh:mm:ss}",
Convert.ToDateTime( bucket.CreationDate));
buckets.Rows.Add(row);
}
}
}
catch (Exception err)
{
MessageBox.Show("Error Occured" + Environment.NewLine + err.Message);
}
return buckets;
}
3.2 How to get the content(s) of a bucket
using (AmazonS3Client _s3Client =
new AmazonS3Client(SessionManager.AccessKeyId,
SessionManager.SecretAccessKeyId))
{
ListObjectsRequest listObjectReq = new ListObjectsRequest();
listObjectReq.WithBucketName(bucketName);
ListObjectsResponse resp = client.ListObjects(listObjectReq);
data.Columns.Add(new DataColumn("Key"));
data.Columns.Add(new DataColumn("LastModified"));
data.Columns.Add(new DataColumn("ETag"));
data.Columns.Add(new DataColumn("Owner"));
data.Columns.Add(new DataColumn("Size"));
data.Columns.Add(new DataColumn("StorageClass"));
DataRow row;
//Loop through the objects obtained to create a data table
foreach(S3Object obj in resp.S3Objects)
{
row = data.NewRow();
row["Key"] = obj.Key;
row["LastModified"] = string.Format("{0:dd-MMM-yyyy hh:mm:ss}",
Convert.ToDateTime( obj.LastModified));
row["ETag"] = obj.ETag;
row["Owner"] = obj.Owner != null ? obj.Owner.DisplayName : "";
row["Size"] = obj.Size.ToString();
row["StorageClass"] = obj.StorageClass;
data.Rows.Add(row);
}
}
3.3 How to create a new bucket
using (AmazonS3Client _s3Client =
new AmazonS3Client(SessionManager.AccessKeyId, SessionManager.SecretAccessKeyId))
{
PutBucketResponse response = _s3Client.PutBucket(
new PutBucketRequest().WithBucketName(bucketName));
}
3.4 How to upload content to a bucket
using (AmazonS3Client s3Client = new AmazonS3Client(
SessionManager.AccessKeyId, SessionManager.SecretAccessKeyId))
{
//Create a unique id for the file
string fileName = "C:\Temp\SomeImage.png";
string key = Guid.NewGuid().ToString() + Path.GetExtension(fileName);
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName(bucketName)
.WithCannedACL(S3CannedACL.PublicRead)
.WithKey(key).InputStream = StreamFile(fileName);
S3Response response = s3Client.PutObject(request);
}
private Stream StreamFile(string fileName)
{
Byte[] byteArray = File.ReadAllBytes(fileName);
MemoryStream mStream = new MemoryStream();
mStream.Write(byteArray, 0, byteArray.Length);
return mStream;
}
3.5 How to download content from a bucket
private bool DownloadFile(string bucketName, string key)
{
string destination = "C:\Temp\";
if (!Directory.Exists(destination))
Directory.CreateDirectory(destination);
using (AmazonS3 _s3Client = Amazon.AWSClientFactory.CreateAmazonS3Client(
SessionManager.AccessKeyId, SessionManager.SecretAccessKeyId))
{
GetObjectRequest getObjectRequest =
new GetObjectRequest().WithBucketName(bucketName).WithKey(key);
using (S3Response getObjectResponse = client.GetObject(getObjectRequest))
{
using (Stream s = getObjectResponse.ResponseStream)
{
using (FileStream fs = new FileStream( Path.Combine(destination, _fileName),
FileMode.Create, FileAccess.Write))
{
byte[] data = new byte[32768];
int bytesRead = 0;
do
{
bytesRead = s.Read(data, 0, data.Length);
fs.Write(data, 0, bytesRead);
}
while (bytesRead > 0);
fs.Flush();
}
}
}
}
}
3.6 How to delete content from a bucket
private bool DeleteFile(string fileName, string bucketName)
{
bool isSuccess = false;
try
{
using (AmazonS3 _s3Client =
Amazon.AWSClientFactory.CreateAmazonS3Client(
SessionManager.AccessKeyId, SessionManager.SecretAccessKeyId))
{
DeleteObjectRequest request = new DeleteObjectRequest();
request.WithBucketName(bucketName).WithKey(fileName);
_s3Client.DeleteObject(request);
}
isSuccess = true;
}
catch (AmazonS3Exception amazonS3Exception)
{
MessageBox.Show("Error occured-" + Environment.NewLine + "Error Code: " +
amazonS3Exception.ErrorCode + Environment.NewLine + "Message: " + amazonS3Exception.Message);
}
return isSuccess;
}
3.7 How to generate the public URL of a content
private string GetPublicUrl(int expirationTime, string bucketName,
string fileName, bool generateSecuredUrl)
{
string publicUrl = "";
using (AmazonS3 _s3Client = Amazon.AWSClientFactory.CreateAmazonS3Client(
SessionManager.AccessKeyId, SessionManager.SecretAccessKeyId))
{
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
DateTime Expiration = DateTime.Now.AddHours(expirationTime);
request.WithBucketName(bucketName).WithKey(fileName).WithExpires(
Expiration).WithProtocol(generateSecuredUrl ? Protocol.HTTPS : Protocol.HTTP);
publicUrl = client.GetPreSignedURL(request);
}
return publicUrl;
}
4.0 User guide
- 1.0 Introduction
- 2.0 Technology details
- 3.0 User manual
- 3.1 Login
- 3.2 How to create a new bucket
- 3.3 How to upload content to a bucket
- 3.4 How to delete content from a bucket
- 3.5 How to download content from a bucket
- 3.6 How to generate the URL of a content/ file
- 3.7 How to change the file download location
- 4.0 Feedback/ Bug reporting
1.0 Introduction
NETS3 is an Open Source application built using the Microsoft .NET technology. This application provides access to S3 contents in an easy and user friendly manner.
2.0 Technology details
2.1 Prerequisites
Microsoft .NET Framework 3.5 or greater.
2.2 How to use
Follow the steps below to use "NETS3".
- Download the files
- Search for the directory executable
- Search for the file NETS3.exe and double click it to run
3.0 User Manual
3.1 Login
Run NETS3.exe.
Enter Access Key Id and Secret Access Key Id and hit the Login button. Successful login will redirect you to the NETS3 xonsole, where you will see your buckets listing and can manipulate them.
3.2 How to create a new bucket
- 3.2.1 Once you are logged in to the NETS3 Console, hit CTRL+N.
- 3.2.2 You will receive a message box,
Enter the name of the bucket you want to create and hit on the Create button.
3.3 How to upload the content to a bucket
- 3.3.1 Right click on the bucket to which you want to upload the content.
- 3.3.2 A context menu will appear. Click (left click) on “Upload Content”. This will bring a new window to upload any file/content.
- 3.3.3 Browse the file you wish to upload. You will see the browsed files in the Selected File(s) grid with add mark.
- 3.3.4 Click on the “Upload” button to upload the selected content to Amazon S3.
3.4 How to delete content from a bucket
- 3.4.1 Click on the bucket from the buckets tree from which you wish to delete content. You will see the files belonging to the bucket on the right side grid.
- 3.4.2 Right click on the file/ content you wish to delete.
- 3.4.3 Click on the “Delete” menu to delete the content.
3.5 How to download content from a bucket
- 3.5.1 Click on the bucket from the buckets tree in the left side, from which you wish to download content. You will see the files belonging to the bucket on the right.
- 3.5.2 Right click on the file/ content you wish to dDownload.
- 3.5.3 Click on the “Download” menu to download the content. By default, the files are downloaded on to your desktop within a folder “NETS3Downloads”. You may change this location. See section 3.7 to know how this path is changed.
3.6 How to generate the URL of any content/ file
- 3.6.1 Click on the bucket from the buckets tree present in the left, from which you wish to share content or file. You will see the files belonging to the bucket on the right side.
- 3.6.2 Right click on the file/ content you wish to share.
- 3.6.3 Click on the “Generate URL” menu to generate the URL to share the content or file.
- 3.6.4 You may generate the secured URL as per your requirement by varying the Expiration Time, choosing HTTP, etc. The URL may be given to anyone to access the contents for a certain time.
3.7 How to change the file download location
- 3.7.1 Go to Settings >> Preferences
- 3.7.2 Browse the location where you wish to save the files downloaded.
4.0 Feedback/ Bug reporting
Feel free to write your suggestions, feedback, user experiences to ak.tripathi@yahoo.com with subject line NETS3.