Amazon web services 如何在AWS Lambda中将多部分表单数据保存到文件中

Amazon web services 如何在AWS Lambda中将多部分表单数据保存到文件中,amazon-web-services,amazon-s3,multipartform-data,aws-serverless,Amazon Web Services,Amazon S3,Multipartform Data,Aws Serverless,我正在使用Node.js和Typescript编写一个无服务器api。我想从客户端发送一个.xlsx文件,并将该文件保存在S3存储桶中。 我试着使用npm包。并且无法读取保存在S3存储桶中的文件(已损坏或未完全写入)。看来我没有正确写入文件。 这是我的密码 import*作为“营业员”中的营业员; 导入AWS=require('AWS-sdk'); 从“aws sdk”导入{S3}; export const saveExcel:Handler=(事件:APIGatewayEvent,上下文:c

我正在使用Node.js和Typescript编写一个无服务器api。我想从客户端发送一个.xlsx文件,并将该文件保存在S3存储桶中。
我试着使用npm包。并且无法读取保存在S3存储桶中的文件(已损坏或未完全写入)。看来我没有正确写入文件。
这是我的密码

import*作为“营业员”中的营业员;
导入AWS=require('AWS-sdk');
从“aws sdk”导入{S3};
export const saveExcel:Handler=(事件:APIGatewayEvent,上下文:context,cb:Callback)=>{
const contentType=event.headers['Content-Type']| | event.headers['Content-Type'];
const bb:busboy.busboy=新的busboy({headers:{'content-type':contentType}});
on('file',函数(字段名、文件、文件名、编码、mimetype){
文件
.on('data',data=>{
常量参数:S3.PutObjectRequest={
Bucket:“Bucket name”,
关键字:文件名,
正文:数据
};
s3.上传(参数、函数(错误、数据){
如果(错误){
控制台日志(err);
}否则{
控制台日志(数据);
}
})
})
.on('end',()=>{
控制台日志(“完成”);
});
});
bb.结束(事件主体);
}

我做错了什么?或者我必须尝试其他库吗?

您的方式-不建议通过Lambda函数将文件上载到S3。在我看来,您可以使用lambda函数生成s3签名链接,将链接返回给客户端,客户端通过签名链接上传文件(直接到s3文件上传方式)@hoangdv在我的场景中我不能这样做。我需要REST API来处理这一部分。
s3的
Body
字段。upload
的参数需要base64字符串,而不是流数据。祝你好运on数据处理程序可能会使用部分数据多次调用,请进行调试并检查是否是您的情况。此外,lambda的有效负载长度也有限制(我相信是6MB)。@gusto2我已经尝试过了。它只被调用一次。