簡體   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