C# .Net Core 3.1 Web Api AWS Lambda,将文件上载到S3-代理文件结果
我已经使用AWS Lampda在C#中创建了一个Web Api项目。 用于将媒体文件上载到S3 bucket=>SNS的Api在上载时终止 我在localhost中尝试了代码,好的,文件上传到S3 bucket中,然后。它是可读的 在我的生产模式下,lamda只处理pdf或txt文件,png、jpeg、zip等文件被破坏。我注意到png、jpeg和zip的文件大小是原来的两倍。我不知道为什么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
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网关设置。。