title: ASP.NET uploading a file to Amazon S3
body: <p>I am in the process of uploading images to Amazon S3, however i keep getting the error <strong>"Please specify either a Filename, provide a FileStream or provide a ContentBody to PUT an object into S3."</strong></p>
  
  <p>Basically i am uploading an image from a fileupload control and then hitting the code below. It uploads locally fine, but not to Amazon. The Credentials are alright so it only errors when it comes to uplaoding.</p>
  
  <p>Can anyone see why this is happening please?</p>
  
  <pre><code>protected void uploadImg(int prodId, int prodFormat)
      {
          if (imgPack.HasFile)
          {
              string fileExt = Path.GetExtension(imgPack.PostedFile.FileName);
              string filename = "img" + prodId + ".jpg";
  
              // Specify the upload directory
              string directory = Server.MapPath(@"\images\packshots\");
  
              if (fileExt == ".jpeg" || fileExt == ".jpg" || fileExt == ".png")
              {
                  if (packUK.PostedFile.ContentLength &lt; 716800)
                  {
                      // Create a bitmap of the content of the fileUpload control in memory
                      Bitmap originalBMP = new Bitmap(packUK.FileContent);
  
                      // Calculate the new image dimensions
                      decimal origWidth = originalBMP.Width;
                      decimal origHeight = originalBMP.Height;
                      decimal sngRatio = origHeight / origWidth;
                      int newHeight = 354;  //hight in pixels
                      decimal newWidth_temp = newHeight / sngRatio;
                      int newWidth = Convert.ToInt16(newWidth_temp);
  
                      // Create a new bitmap which will hold the previous resized bitmap
                      Bitmap newBMP = new Bitmap(originalBMP, newWidth, newHeight);
                      // Create a graphic based on the new bitmap
                      Graphics oGraphics = Graphics.FromImage(newBMP);
  
                      // Set the properties for the new graphic file
                      oGraphics.SmoothingMode = SmoothingMode.AntiAlias;
                      oGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                      // Draw the new graphic based on the resized bitmap
                      oGraphics.DrawImage(originalBMP, 0, 0, newWidth, newHeight);
  
                      // Save the new graphic file to the server
  
                      string accessKey = "KEY HERE";
                      string secretKey = "KEY HERE";
                      AmazonS3 client;
  
                      using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))
                      {
                          PutObjectRequest request = new PutObjectRequest();
                          request.BucketName="MyBucket";
                          request.CannedACL = S3CannedACL.PublicRead;
                          request.Key = "images/" + filename;
                          S3Response response = client.PutObject(request);
                      }
  
                      //newBMP.Save(directory + filename);
  
                      // Once finished with the bitmap objects, we deallocate them.
                      originalBMP.Dispose();
                      newBMP.Dispose();
                      oGraphics.Dispose();
                  }
              }
              else
              {
                  notifybar.Attributes.Add("style", "display:block;");
                  notifybar.Attributes.Add("class", "failed");
                  notifyText.Text = "Error Text Here";
              }
  
          }
          else
          {
              notifybar.Attributes.Add("style", "display:block;");
              notifybar.Attributes.Add("class", "failed");
              notifyText.Text = "Error Text Here";
          }
      }
  </code></pre>