在Lambda中处理多部分/表单数据

问题描述 投票:0回答:1

我有一个从AWS API Gateway调用的lambda函数。

lambda将图像作为multipart / form-data接收,然后lambda需要添加一些额外的标头,并使用multipart / form-data将该图像传递给另一个外部服务。] >

现在,我的服务正在执行此操作:

'use strict'
const AWS = require('aws-sdk');
const https = require('https');
const request = require('request');

exports.handler = (event, context, callback) => {

const options = {
        method: 'POST',
        url: 'https://external-service/image-storage',
        port: 443,
        headers: {
            "Content-Type": "multipart/form-data"
        },
        formData: {
            username: "67a43djte5s4cb54mnasbds23",
            secret: "47938hjfsdhjfdfdfs",
            photo: \\ I want to put here the image received in the event
        }
    };

    request(options, function(err, res, body) {
        if (err) console.log(err);
        console.log(body);
    });
}

photo参数中,我尝试放入event.body,但是它不起作用,因为外部服务给了我一个“无效的请求”(我已经尝试过用邮递员使用外部服务,并且它可以正常工作。) >

所以我认为问题出在lambda上。

当我在控制台中打印event.body的内容时,这是输出:

2020-04-02T13:17:27.478Z    0c03qsrf-78a2-2356-b9b0-0fd76fb367712   INFO    ----------------------------027326659651005153655343
Content-Disposition: form-data; name="image"; filename="MyImage.jpg"
Content-Type: image/jpeg
����JFIF��C...

我需要对身体进行任何其他变形吗?

谢谢,

我有一个从AWS API Gateway调用的lambda函数。 Lambda正在接收图像作为多部分/表单数据,然后Lambda需要添加一些额外的标头并将该图像传递给...

amazon-web-services aws-lambda content-type
1个回答
0
投票

[如果有人到达时遇到了我昨天遇到的相同问题,最好的方法是遵循Michael Hausenblas的建议(请参阅他在我的问题下的评论),并使用S3和预先签名的网址。

但是,由于前端的某些限制,我无法采用这种方法。

© www.soinside.com 2019 - 2024. All rights reserved.