AWS Lambda返回PDF文件
我创build了一个使用无服务器的lambda函数。 这个函数是通过GET请求的API网关触发的,并且应该从缓冲区中返回一个pdf文件。 我正在使用html-pdf创build缓冲区,并尝试使用以下命令返回PDF文件
let response = { statusCode: 200, headers: {'Content-type' : 'application/pdf'}, body: buffer.toString('base64'), isBase64Encoded : true, }; return callback(null, response);
但浏览器只是无法加载PDF,所以我不知道如何将PDF文件直接返回到浏览器。 无法find解决scheme。
好,我find了答案。 我的响应对象的设置是好的,我只需要手动更改API网关中的设置,以便在浏览器中工作。 在API Gateway控制台的二进制设置下,我已经在二进制媒体types中添加了“* / *”
API GATEWAY
- 只需login到您的控制台
- select你的API
- 点击下拉菜单中的二进制支持
- 编辑二进制媒体types并添加“* / *”
前端
在新标签中打开api url(target =“_ blank”)。 可能浏览器正在处理编码的base 64响应,在我的情况下,浏览器只是打开PDF格式在一个新的选项卡就像我想要的。
如果您有一个巨大的PDF,那么Lambda将花费很长时间才能将其返回,而在Lambda中,您每100ms收费一次。
我将它保存到S3,然后让Lambda返回S3 url到客户端进行下载。