[我正在尝试将包含pdf文件的multipart/form-data
POST发送到AWS lambda函数,对文件进行一些检查,然后将文件POST到外部API。
我正在使用无服务器框架以及node.js和aws-lambda-multipart-parser插件来接收文件。
从客户端上传到lambda的文件有效,我可以将缓冲区内容打印到控制台。无效的部分是将文件转发到外部API。
这是我当前的axios设置,用于向外部API发出POST请求:
const formData = new FormData();
formData.append("file", file.content, file.filename);
const res = await axios.post(`https://external-api.com`, formData, {
headers: { ...formData.getHeaders(), "Access-Control-Allow-Origin": "*" },
params: {
someParams: foo
}
});
[file.content
实际上包含一个包含文件内容的缓冲区,但是当我发出请求时,外部API返回错误并且请求失败...
有趣的是,当我使用sls offline
在本地运行无服务器功能时,整个设置工作正常。这可能表明API网关设置存在问题。
一些其他信息:
基于多部分插件的instructions,我在API网关设置中添加了二进制数据类型:
这是AWS Gateway中终端的配置:
我也尝试过此SO question和AWS documentation,但它们仅介绍如何接收二进制文件,而不涉及如何发送二进制文件。
是否可以在lambda中接收然后发送文件,还是应该以其他方式解决?
我对该库有同样的问题。因此,我尝试使用-https://developer.aliyun.com/mirror/npm/package/aws-multipart-parser-还描述了在serverless.yml文件中写入的内容。现在正在像魅力一样工作!