在处理API网关/λ的multipart / form-data的

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

我试了几个方法,没有能够得到它的工作。

客户端(反应),我使用如下POST发送一个压缩文件,

const data = new FormData();
        data.append('file', file);
        data.append('filename', file.name);

let params = {
            headers: {
                'Content-Type': 'multipart/form-data'
            },
            body: data
        };

服务器端:(API网关/λ/的NodeJS)我说“多/表单数据”为二进制媒体类型上网关侧。

当通过拉姆达event.body解析没有很好地形成。它看起来像这样:

{"body": "e30=",
"isBase64Encoded": true }

任何想法可能会发生什么?任何发生在如何解析?

api lambda multipartform-data gateway serverless
2个回答
1
投票

你得到base64编码数据,以下是解码的方式之一。但是它是一个空的对象。

var base64 = 'e30='
var decodedData = Buffer.from(base64, 'base64').toString();

console.log(decodedData)

1
投票

尽管亚利桑那州的答案是正确的,我强烈建议你寻找到AWS Pre-Signed Upload URLs。它可以让你的客户先上传文件到AWS S3桶,从那里你lambda函数以后可以访问该对象。

尤其是当你与大型二进制文件的工作,前一种方法会导致很多问题( - >内存的问题,这是疏LAMBDA)。

我在过去写a short blog post about this

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