我尝试了几种方法,无法使其正常工作。
客户端(反应),我正在使用POST发送如下的zip文件,
const data = new FormData();
data.append('file', file);
data.append('filename', file.name);
let params = {
headers: {
'Content-Type': 'multipart/form-data'
},
body: data
};
服务器端:(API网关/ Lambda / Nodejs) 我在网关端的“二进制媒体类型”中添加了“ multipart / form-data”。
通过lambda event.body解析时,格式不正确。 看起来像这样:
{"body": "e30=",
"isBase64Encoded": true }
任何想法可能会发生什么?有什么解析方法吗?
答案 0 :(得分:1)
您正在获取base64编码的数据,以下是解码的方法之一。 但是,这是一个空对象。
var base64 = 'e30='
var decodedData = Buffer.from(base64, 'base64').toString();
console.log(decodedData)
答案 1 :(得分:1)
尽管Ariz的答案是正确的,但我强烈建议您研究AWS Pre-Signed Upload URLs。它使您的客户端可以首先将文件上传到AWS S3存储桶,您的lambda函数可以从那里稍后访问该对象。
尤其是在处理大型二进制文件时,前一种方法可能会导致很多问题(->内存问题,这在Lambda中很少见)。