繁体   English   中英

从 lambda (Nodejs) 上传 multipart/form-data 到 S3

[英]Upload multipart/form-data to S3 from lambda (Nodejs)

我想使用 Nodejs 将 multipart/form-data 文件上传到 S3。

我尝试了各种方法,但都没有奏效。 我能够从 lambda 将内容写入 S3,但是当文件从 S3 下载时,它已损坏。

有人可以为我提供可以帮助我的工作示例或步骤吗?

感谢你在期待。

如果您这么认为,请提出另一种选择。

以下是我的 lambda 代码:

export const uploadFile = async event => {
  const parser = require("lambda-multipart-parser");
  const result = await parser.parse(event);
  const { content, filename, contentType } = result.files[0];
  const params = {
    Bucket: "name-of-the-bucket",
    Key: filename,
    Body: content,
    ContentDisposition: `attachment; filename="${filename}";`,
    ContentType: contentType,
    ACL: "public-read"
  };

  const res = await s3.upload(params).promise();
  return {
        statusCode: 200,
        body: JSON.stringify({
            docUrl: res.Location
        })
    };
}

如果想通过 lambda 上传文件,一种方法是打开您的 AWS API Gateway 控制台。

“API” -> {YourAPI} -> “设置”

在那里你会找到“二进制媒体类型”部分。

添加以下媒体类型:

多部分/表单数据

保存您的更改。

然后转到“资源”->“代理方法”(例如“任何”)->“方法请求”->“HTTP 请求标头”并添加以下标头“内容类型”、“接受”。

最后部署你的api。

有关更多信息,请访问: https : //docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html

有 2 个可能的故障点 - Lambda 接收到损坏的数据,或者您在将数据发送到 S3 时损坏了数据。

将 multipart/form-data 内容发送到 Lambda 并不简单。 你可以在这里看到如何做到这一点
完成此操作并确定 Lambda 中的数据正确后,请检查是否将其正确发送到 S3(请参阅 S3 文档和示例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM