2

I'm trying to upload a image to my bucket, but I can't because I have this error:

An exception of type 'Amazon.Runtime.AmazonServiceException' occurred in mscorlib.dll but was not handled in user code

Detail

{"Encountered a non retryable WebException : RequestCanceled"}

More Detail

{"The request was aborted: The request was canceled."}

Inner Exception

The stream was already consumed. It cannot be read again.

I'm using the AWS SDK for VS2013.

Code

private const string ExistingBucketName = "******development"; //Name of the bucket
private const string KeyName = "Images";

public static void UploadToS3(string filePath)
    {

        //filePath -> C:\example.jpg            

        try
        {
            var fileTransferUtility = new
                TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1));

            // 1. Upload a file, file name is used as the object key name.
            fileTransferUtility.Upload(filePath, ExistingBucketName);
            Trace.WriteLine("Upload 1 completed");

            // 2. Specify object key name explicitly.
            fileTransferUtility.Upload(filePath,
                                      ExistingBucketName, KeyName);
            Trace.WriteLine("Upload 2 completed");

            // 3. Upload data from a type of System.IO.Stream.
            using (var fileToUpload =
                new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                fileTransferUtility.Upload(fileToUpload,
                                           ExistingBucketName, KeyName);
            }
            Trace.WriteLine("Upload 3 completed");

            // 4.Specify advanced settings/options.
            var fileTransferUtilityRequest = new TransferUtilityUploadRequest
            {
                BucketName = ExistingBucketName,
                FilePath = filePath,
                StorageClass = S3StorageClass.ReducedRedundancy,
                PartSize = 6291456, // 6 MB.
                Key = KeyName,
                CannedACL = S3CannedACL.PublicRead
            };
            fileTransferUtilityRequest.Metadata.Add("param1", "Value1");
            fileTransferUtilityRequest.Metadata.Add("param2", "Value2");
            fileTransferUtility.Upload(fileTransferUtilityRequest);
            Trace.WriteLine("Upload 4 completed");
        }
        catch (AmazonS3Exception s3Exception)
        {
            Trace.WriteLine(s3Exception.Message);
            Trace.WriteLine(s3Exception.InnerException);
        }
    }

3 Answers 3

2

My error was in:

var fileTransferUtility = new
                TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1));

I was using an incorrect region... I changed by Europe and it works.

 var fileTransferUtility = new
                    TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.EUWest1));
Sign up to request clarification or add additional context in comments.

Comments

0

By doing this:

using (var fileToUpload =
                new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                fileTransferUtility.Upload(fileToUpload,
                                           ExistingBucketName, KeyName);
            }

You are disposing your filestream before it gets uploaded. Try to remove the using clause or wrap the entire call in it.

Comments

0

User as follows :

TransferUtility fileTransferUtility = new TransferUtility(new AmazonS3Client("Access Key Id", "Access Segret key",Amazon.RegionEndpoint.USEast1));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.