从API网关和Lambda查看JPG文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从API网关和Lambda查看JPG文件相关的知识,希望对你有一定的参考价值。
我使用节点在lambda上创建了一些代码。
const fs= require('fs');
const axios= require('axios');
exports.handler= async (event, context, callback) =>
const imageBase64= await axios.get(
'https://upload.wikimedia.org/wikipedia/commons/8/84/Prunus_flower.jpg',
responseType: 'arraybuffer'
).toString('base64');
return
statusCode: 200,
headers: 'Content-Type': 'image/jpeg' ,
body: imageBase64,
isBase64Encoded: true,
我还设置了API网关。
二进制媒体类型为image/*
然后,当我访问API网关时。我遇到了以下错误。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9YM0hHaC5wbmcifQ==” alt =“在此处输入图像描述”>
https://p9knlxmx62.execute-api.ap-northeast-1.amazonaws.com/img/
我不确定该如何解决。
答案
您的imageBase64
不是有效的Base64图像字符串。
要获取图像文件形式的URL并使用axios
转换为base64字符串,您可以看到我的代码:
...
const response = await axios.get(
'https://upload.wikimedia.org/wikipedia/commons/8/84/Prunus_flower.jpg',
responseType: 'arraybuffer'
);
const imageBase64 = Buffer.from(response.data, 'binary').toString('base64');
...
另一答案
1)您必须呼叫回叫。
2)axios调用的结果是图像在.data
中的对象>
整体代码:
const fs= require('fs');
const axios= require('axios');
exports.handler= async (event, context, callback) =>
const imageBody = await axios.get(
'https://upload.wikimedia.org/wikipedia/commons/8/84/Prunus_flower.jpg',
responseType: 'arraybuffer'
);
callback(null,
statusCode: 200,
headers: 'Content-Type': 'image/jpeg' ,
body: imageBody.data.toString('base64'),
isBase64Encoded: true,
);
以上是关于从API网关和Lambda查看JPG文件的主要内容,如果未能解决你的问题,请参考以下文章
AWS - 从公共 API 网关到 VPC 内 lambda 的路由
如何避免通过重新映射无服务器框架从 Lambda 传递回 API 网关的标头?
我是不是需要在 Lambda 和 API 网关中验证 AWS Cognito 令牌?