我想从AWS Lambda函数返回pdf,并且我使用API Gateway从任何浏览器中调用它。
我在c#中有一个aws lambda函数,它返回一个API网关响应,其主体是pdf
中的base64 encoded string
。
到目前为止,端点返回的文件扩展名为.pdf
,但不是二进制文件。而是带有base64字符串的文本文件。
我从C#代码返回的标头是:
var headersDic = new Dictionary<string, string>();
headersDic.Add("Content-type", "application/pdf");
headersDic.Add("Content-disposition", "attachment; filename=file.pdf");
我将base64字符串手动转换为二进制文件并以pdf格式打开,并且它可以工作,我的意思是base64字符串正确,因此我认为问题出在API网关上。
在API网关的集成响应控制台中,我得到了:
但是我无法使其工作。
我还启用了二进制媒体类型。
答案 0 :(得分:0)
答案 1 :(得分:0)
您还需要在LambdaEntryPoint.cs
您必须告诉Lambda您将返回字符串以外的东西。
public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
{
protected override void Init(IWebHostBuilder builder)
{
builder
.UseStartup<Startup>();
****IMPORTANT PART HERE****
RegisterResponseContentEncodingForContentType("application/pdf",
ResponseContentEncoding.Base64);
}
}
答案 2 :(得分:0)