【发布时间】:2020-07-14 12:21:29
【问题描述】:
我有一个从 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...
我需要对身体进行任何额外的改造吗?
谢谢,
【问题讨论】:
-
遇到了同样的挑战,请参阅 dev.to/mhausenblas/a-lesson-learned-in-going-serverless-1ko8 了解我是如何解决的……
-
谢谢@MichaelHausenblas 我在几个小时前的研究阶段发现了你的问题;不幸的是,由于前端的其他限制(至少现在),我无法使用预签名的网址,谢谢!顺便说一句,很棒的帖子
标签: amazon-web-services aws-lambda content-type