我试了几个方法,没有能够得到它的工作。
客户端(反应),我使用如下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 }
任何想法可能会发生什么?任何发生在如何解析?
你得到base64编码数据,以下是解码的方式之一。但是它是一个空的对象。
var base64 = 'e30='
var decodedData = Buffer.from(base64, 'base64').toString();
console.log(decodedData)
尽管亚利桑那州的答案是正确的,我强烈建议你寻找到AWS Pre-Signed Upload URLs。它可以让你的客户先上传文件到AWS S3桶,从那里你lambda函数以后可以访问该对象。
尤其是当你与大型二进制文件的工作,前一种方法会导致很多问题( - >内存的问题,这是疏LAMBDA)。