【问题标题】:client.PutObjectAsync(request) uploading a broken image using aws lambdaclient.PutObjectAsync(request) 使用 aws lambda 上传损坏的图像
【发布时间】:2019-10-31 15:57:52
【问题描述】:

我的图像正在本地上传,但是当我部署 lambda 时,它给出了一个损坏的图像(注意:它正在上传图像但大小增加了),我在 API 网关中添加了二进制媒体类型,但仍然没有得到正确的结果。有趣的是,当我上传一个文本文件时,它在存储桶上是完美的,但不是图像。

public  async Task<S3Response> ImageUpload(IFormFile file ){

 string bucket_name = "your_bucket";

 var client = new AmazonS3Client("***", "****", RegionEndpoint.USEast1);

 var stream = new System.IO.MemoryStream();

 file.CopyTo(stream);

 var request = new PutObjectRequest
 {                   

   Key = file.FileName,

   BucketName = bucket_name,  

   InputStream = stream,

   //ContentType = "application/octet-stream",

   ContentType = file.ContentType,

   CannedACL = S3CannedACL.PublicRead

 };

 response = await client.PutObjectAsync(request);

}

【问题讨论】:

    标签: c# amazon-s3 .net-core aws-lambda


    【解决方案1】:

    我将图像保存为 s3 存储桶上的 base64 字符串,并在客户端从 base64 字符串转换回我的原始图像。如果有人有更好的解决方案,请添加一个线程。

    
    
    byte[] byteArray = Encoding.UTF8.GetBytes(file.Filebase64);
    stream= new MemoryStream(byteArray);
    var request = new PutObjectRequest
    {
    
      Key=file.File_name,
      BucketName = bucket_name,
      InputStream = stream,
      ContentType = "text/plain",
      CannedACL = S3CannedACL.PublicRead
    };
    

    Image 文件模型类如下所示:

    public class ImageModel
    {
            public String File_name { set; get; }
            public String Filebase64 { set; get; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-15
      • 2015-11-14
      • 2022-08-17
      • 2016-06-26
      • 2022-08-13
      • 2017-11-25
      • 2018-01-16
      • 2021-09-26
      相关资源
      最近更新 更多