Node.js 在Lambda中使用busboy库上载文件时丢失数据?

Node.js 在Lambda中使用busboy库上载文件时丢失数据?,node.js,file-upload,aws-lambda,aws-api-gateway,busboy,Node.js,File Upload,Aws Lambda,Aws Api Gateway,Busboy,我试图在lambda函数中使用busboy来处理post请求,该请求应该是上传一个图像文件。我注意到,整个文件内容并没有使它被busboy解析 我尝试将对busboy.write的调用改为只使用'base64',因为该文件看起来是以二进制形式到达的,但这也不起作用 我的客户代码 const formData=new formData(); formData.append(“文件”,params.file,params.file.name); const request=new XMLHttpRe

我试图在lambda函数中使用busboy来处理post请求,该请求应该是上传一个图像文件。我注意到,整个文件内容并没有使它被busboy解析

我尝试将对busboy.write的调用改为只使用'base64',因为该文件看起来是以二进制形式到达的,但这也不起作用

我的客户代码

const formData=new formData();
formData.append(“文件”,params.file,params.file.name);
const request=new XMLHttpRequest();
请求打开(“POST”https://myapi/uploadphoto");
request.setRequestHeader('Authorization',this.props.idToken);
请求。发送(formData);
我的lambda代码

函数getFile(事件){
const-busboy=new-busboy({headers:event.headers});
const result={};
返回新承诺((解决、拒绝)=>{
on('file',(字段名、文件、文件名、编码、mimetype)=>{
file.on('data',data=>{
结果.内容=数据;
log(“获取数据…”+data.length+bytes”);
});
file.on('end',()=>{
result.filename=文件名;
result.contentType=mimetype;
决心(结果);
});
});
on('error',error=>reject(error));
write(event.body,event.isBase64Encoded?'base64':'binary');
公共汽车司机;
});
}
尝试使用示例照片时,我注意到“Get data”控制台日志显示我没有收到整个文件。我使用的文件是229707字节,但控制台日志显示它收到了217351字节


我想知道我是否使用了busboy错误,或者这是lambda+api网关的一些怪癖。非常感谢您提供的任何解决问题的想法或帮助。

我也在努力解决这个问题,但最终还是API网关出现了问题

我可以通过在API网关的设置中添加多部分/表单数据作为二进制媒体类型来解决这个问题

要执行此操作,请转到API网关>“您的API”>设置>添加二进制媒体类型并添加多部分/表单数据

之后,再次部署API,它应该可以工作


我希望这对任何人都有帮助

这已经一年多了,但我也遇到了这个问题。