簡體   English   中英

從 API 網關和 Lambda 查看 JPG 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM