[英]To see JPG file from API gateway and Lambda
我使用 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 網關時。 我遇到了以下錯誤。
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
對象
所以整體處理程序代碼:
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,
}
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.