我使用node在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网关时。 我遇到了以下错误。 enter image description here
https://p9knlxmx62.execute-api.ap-northeast-1.amazonaws.com/img/
我不确定该如何解决。
答案 0 :(得分:0)
您的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 :(得分:0)
1)您必须呼叫回叫。
2)axios调用的结果是图像位于.data
整体处理程序代码:
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,
}
);
}