我使用 serverless 创建了一个 lambda 函数。此函数通过 API Gateway 在 GET 请求上触发,并应从缓冲区返回一个 pdf 文件。我正在使用 html-pdf 创建缓冲区并尝试使用以下命令返回 pdf 文件
let response = {
statusCode: 200,
headers: {'Content-type' : 'application/pdf'},
body: buffer.toString('base64'),
isBase64Encoded : true,
};
return callback(null, response);
但是浏览器只是无法加载pdf,所以我不知道如何将pdf文件直接返回给浏览器。找不到解决方案。
原文由 sami_analyst 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我找到了答案。我的响应对象中的设置很好,我只需要手动更改 API Gateway 中的 设置 即可在浏览器中使用。我已在 API Gateway 控制台的二进制设置下将“*/*”添加到二进制媒体类型
API 网关
前端
在新选项卡中打开 api url (target=“_blank”)。可能浏览器正在处理编码的 base 64 响应,在我使用 chrome 的情况下,浏览器只是在新选项卡中打开 pdf,就像我想要的那样。