我已经使用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文件直接返回到浏览器。找不到解决方案。
好吧,我找到了答案。我的响应对象中的设置很好,我只需要手动更改API Gateway中的设置即可在浏览器中使用。我在API Gateway控制台的二进制设置下为二进制媒体类型添加了“ * / *”
API网关
前端
在新标签页中打开api网址(target =“ _ blank”)。可能是浏览器正在处理已编码的base 64响应。就我而言,对于chrome,浏览器只是在新标签页中打开pdf,就像我想要的那样。