C# .Net Core 3.1 Web Api AWS Lambda,将文件上载到S3-代理文件结果

C# .Net Core 3.1 Web Api AWS Lambda,将文件上载到S3-代理文件结果,c#,amazon-s3,aws-lambda,aws-api-gateway,.net-core-3.1,C#,Amazon S3,Aws Lambda,Aws Api Gateway,.net Core 3.1,我已经使用AWS Lampda在C#中创建了一个Web Api项目。 用于将媒体文件上载到S3 bucket=>SNS的Api在上载时终止 我在localhost中尝试了代码,好的,文件上传到S3 bucket中,然后。它是可读的 在我的生产模式下,lamda只处理pdf或txt文件,png、jpeg、zip等文件被破坏。我注意到png、jpeg和zip的文件大小是原来的两倍。我不知道为什么 public UploadResponse UploadFile(UploadRequest reque

我已经使用AWS Lampda在C#中创建了一个Web Api项目。 用于将媒体文件上载到S3 bucket=>SNS的Api在上载时终止

我在localhost中尝试了代码,好的,文件上传到S3 bucket中,然后。它是可读的

在我的生产模式下,lamda只处理pdf或txt文件,png、jpeg、zip等文件被破坏。我注意到png、jpeg和zip的文件大小是原来的两倍。我不知道为什么

public UploadResponse UploadFile(UploadRequest request)
        {
            AmazonS3Client client = new AmazonS3Client(Settings.GetAppKey(), Settings.GetSecretKey(), 
                RegionEndpoint.GetBySystemName(request.RegionS3));
            if (request.File.Length > 0)
            {
                if (string.IsNullOrEmpty(request.FileName))
                {
                    request.FileName = Guid.NewGuid().ToString();
                }
                MemoryStream inputFile = new MemoryStream();
                using (inputFile)
                {
                    request.File.CopyTo(inputFile);
                    var d = request.File.ContentType;
                    var s = request.File.Length;
                    var uploadRequest = new TransferUtilityUploadRequest
                    {
                        InputStream = inputFile,
                        ContentType = request.File.ContentType,
                        Key = request.FileName,
                        BucketName = request.BucketName,
                        CannedACL = S3CannedACL.PublicRead
                    };
                    TransferUtility fileTransferToS3 = new TransferUtility(client);
                    fileTransferToS3.UploadAsync(uploadRequest).Wait();
                };
            }
            return UploadResponse.CreateUploadResponse(request.File.ContentType, request.FileName);
        }



        protected override void Init(IWebHostBuilder builder)
        {
            RegisterResponseContentEncodingForContentType("multipart/form-data", ResponseContentEncoding.Base64);
            builder
                .UseStartup<Startup>();
        }
公共上传响应上传文件(上传请求)
{
AmazonS3Client client=新的AmazonS3Client(Settings.GetAppKey(),Settings.GetSecretKey(),
GetBySystemName(request.RegionS3));
如果(request.File.Length>0)
{
if(string.IsNullOrEmpty(request.FileName))
{
request.FileName=Guid.NewGuid().ToString();
}
MemoryStream inputFile=新的MemoryStream();
使用(输入文件)
{
request.File.CopyTo(inputFile);
var d=request.File.ContentType;
var s=request.File.Length;
var uploadRequest=新的TransferUtilityUploadRequest
{
InputStream=inputFile,
ContentType=request.File.ContentType,
Key=request.FileName,
BucketName=request.BucketName,
CannedACL=S3CannedACL.PublicRead
};
TransferUtility fileTransferToS3=新的TransferUtility(客户端);
fileTransferToS3.UploadAsync(uploadRequest).Wait();
};
}
返回UploadResponse.CreateUploadResponse(request.File.ContentType,request.FileName);
}
受保护的重写void Init(IWebHostBuilder)
{
RegisterResponseContentEncodingForContentType(“多部分/表单数据”,ResponseContentEncoding.Base64);
建设者
.UseStartup();
}

解决方案将多部分/表单数据设置为api网关设置。解决方案将多部分/表单数据设置为api网关设置。。