user8756374
user8756374

Reputation: 21

Image Upload s3 bucket form deployed dot net cor AWS lambda serverless app not working (broken Image)

when i make post request to upload image file to aws s3 bucket form my local dot net core aws lambda serverless application it works but form my deployed application the image still uploded to s3 bucket but the image broken (shows black empty image)

here is the code

    [HttpPut("PostImageFile")]
    public async Task FileImageAsync(string  Id)
    {
        var s3Client = new AmazonS3Client("*******", "*******", Amazon.RegionEndpoint.USEast1);

        try
        {
            var httpRequest = HttpContext.Request;
            //posted file
            var file = httpRequest.Form.Files[0];            

            byte[] fileBytes = new byte[file.Length];
            file.OpenReadStream().Read(fileBytes, 0, Int32.Parse(file.Length.ToString()));

            var fileName = Guid.NewGuid() + file.FileName;

            PutObjectResponse response = null;

            using (var stream = new MemoryStream())
            {
                file.CopyTo(stream);

                var request = new PutObjectRequest
                {
                    BucketName = "imageakal",
                    Key = fileName,
                    InputStream = stream,

                    ContentType = file.ContentType,
                    CannedACL = S3CannedACL.PublicReadWrite
                };

                response = await s3Client.PutObjectAsync(request);
            };
        }
        catch (Exception ex)
        {
            Console.Write("Upload Failed: " + ex.Message);
        }
    }

Upvotes: 2

Views: 642

Answers (2)

Arman Abdullah
Arman Abdullah

Reputation: 11

Just put "multipart/form-data" at 'Binary Media Type' section in Api Gateway setting tab, and deploy it(don't forget).

Upvotes: 0

Lewis Cianci
Lewis Cianci

Reputation: 1065

Without many more details, I would guess that your AWS settings could have a list of permitted/denied domains. I would check that your AWS instance is configured to allow requests from your domain.

Upvotes: 1

Related Questions