C# PutObjectAsync(请求)使用aws lambda上载损坏的映像
我的图像正在本地上传,但当我部署lambda时,它给出了一个损坏的图像(注意:它正在上传图像,但大小增加),我在API网关中添加了二进制媒体类型,但仍然没有得到正确的结果。有趣的是,当我上传一个文本文件时,它在桶上是完美的,但不是图像C# PutObjectAsync(请求)使用aws lambda上载损坏的映像,c#,amazon-s3,.net-core,aws-lambda,C#,Amazon S3,.net Core,Aws Lambda,我的图像正在本地上传,但当我部署lambda时,它给出了一个损坏的图像(注意:它正在上传图像,但大小增加),我在API网关中添加了二进制媒体类型,但仍然没有得到正确的结果。有趣的是,当我上传一个文本文件时,它在桶上是完美的,但不是图像 public async Task<S3Response> ImageUpload(IFormFile file ){ string bucket_name = "your_bucket"; var client = new AmazonS3
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);
}
公共异步任务ImageUpload(IFormFile){
string bucket_name=“您的_bucket”;
var client=newamazons3client(“****”,“****”,RegionEndpoint.USEast1);
var stream=new System.IO.MemoryStream();
file.CopyTo(流);
var请求=新的PutObjectRequest
{
Key=file.FileName,
BucketName=bucket_名称,
InputStream=流,
//ContentType=“应用程序/八位字节流”,
ContentType=file.ContentType,
CannedACL=S3CannedACL.PublicRead
};
response=wait client.PutObjectAsync(请求);
}
我将图像保存为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
};
其中图像文件模型类如下所示:
public class ImageModel
{
public String File_name { set; get; }
public String Filebase64 { set; get; }
}