如何在Aws Lambda Api网关中使用.net核心c#接收文件



我有项目.net核心无服务器应用


public APIGatewayProxyResponse UploadFile(APIGatewayProxyRequest request, ILambdaContext context)
{
FileModel model = JsonConvert.DeserializeObject<FileModel>(request.Body);
return new APIGatewayProxyResponse
{
StatusCode = (int)HttpStatusCode.OK,
Body = JsonConvert.SerializeObject(new Dictionary<string, string>
{
{ "Code",$"{model.filename}"},
{ "Description",$"File Recieved"}
})
};

}

我有Lambda函数,它应该使用ApiGatewayProxyRequest接收文件我正在通过邮递员使用表单数据上传文件。lambda函数内部没有接收到任何内容如何使用这种方法接收文件?提前感谢

我遇到了同样的问题,我需要处理lambda函数中的音频文件,并需要将其发送到外部API。我使用了一个包HttpMultiParser在NuGet包管理器中解析该文件以及其他表单数据参数。

下面是一个用于解析文件以及其他参数的示例函数。此函数的输入是APIGatewayHttpApiV2ProxyRequest对象的request.body

private MyModel ExtractFormData(string requestBody)
{
try
{
var parser = HttpMultipartParser.MultipartFormDataParser.Parse(new MemoryStream(Convert.FromBase64String(requestBody)));
var file = parser.Files.First();
Stream audioFile = file.Data;
MyModel extractedData = new MyModel
{
FirstName = Convert.ToString(parser.GetParameterValue("FirstName")),  //STRING
LastName = Convert.ToString(parser.GetParameterValue("LastName")),   //STRING
VoiceFile = audioFile   //byte[]
};
return extractedData;
}
catch (Exception e)
{
LambdaLogger.Log("CUSTOM LOG : Exception e: " + JsonConvert.SerializeObject(e));
return new MyModel();
}
}

顺便说一句,向Lambda发送小文件是可以的,但并不意味着要处理大文件。您可以将文件上传到S3 bucket,并使用Lambda函数进行处理。

最新更新