client.PutObjectAsync (запрос) загрузка поврежденного изображения с помощью aws lambda - PullRequest
0 голосов
/ 31 октября 2019

Мое изображение загружается локально, но когда я развернул лямбду, он дает испорченное изображение (Примечание: оно загружает изображение, но его размер увеличивается), я добавил Бинарный тип носителя в шлюз 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);

}

1 Ответ

0 голосов
/ 10 ноября 2019

Я сохраняю изображение в виде строки base64 в корзине s3 и преобразую обратно из строки 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
};

гдеКласс модели файла изображения выглядит следующим образом:

public class ImageModel
{
        public String File_name { set; get; }
        public String Filebase64 { set; get; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...