views:

43

answers:

2

Hi.

I have my image from Request.Files[0]. Now, how do I upload this image to S3? I see that in the AWS .NET API you have to specify ContentBody when putting an object which is a string. How would I get the content body of my file?

+1  A: 

Most likely this is a Base64-encoded string, but you should check the S3 documentation to be sure. If it is, you should use Convert.ToBase64String() and pass it the byte array.

Here's some sample code you can try. I haven't tested it, but it should help you get the right idea:

if (Request.Files.Count >= 1) {
    var file = Request.Files[0];
    var fileContents = new byte[file.ContentLength];
    file.InputStream.Read(fileContents, 0, file.ContentLength);
    var fileBase64String = Convert.ToBase64String(fileContents);

    // now you can send fileBase64String to the S3 uploader
}
Scott Anderson
That didn't work, but what did work was using file.InputStream as the InputStream property of a PutObjectRequest object. Thanks for your help!
Matt H
+3  A: 
var file = Request.Files[0];
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "mybucket"
request.ContentType = contentType;
request.Key = key;
request.InputStream = file.InputStream;
s3Client.PutObject(request);
Matt H