一尘不染

AWS Lambda无法返回PDF文件

node.js

我已经使用serverless创建了一个lambda函数。该函数通过API网关在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文件直接返回到浏览器。找不到解决方案。


阅读 249

收藏
2020-07-07

共1个答案

一尘不染

好吧,我找到了答案。我的响应对象中的设置很好,我只需要手动更改API Gateway中的设置即可在浏览器中使用。我在API
Gateway控制台的二进制设置下为二进制媒体类型添加了“ * / *”

API网关

  1. 只需登录您的控制台
  2. 选择你的API
  3. 单击下拉列表中的二进制支持
  4. 编辑二进制媒体类型并添加“ * / *”

前端

在新标签页中打开api网址(target =“ _ blank”)。可能是浏览器正在处理已编码的base
64响应。就我而言,对于chrome,浏览器只是在新标签页中打开pdf,就像我想要的那样。

2020-07-07