Выгрузите составные данные / данные формы на S3 из лямбды (Nodejs) - PullRequest
0 голосов
/ 24 января 2020

Я хочу загрузить файл multipart / form-data на S3, используя Nodejs.

Я пробовал разные подходы, но ни один из них не работает. Мне удалось записать содержимое на S3 с лямбды, но когда файл загружен с S3, он был поврежден.

Может ли кто-нибудь предоставить мне рабочий пример или шаги, которые могут мне помочь?

Благодарность Вы в ожидании.

Пожалуйста, предложите другую альтернативу, если вы так думаете.

Ниже приводится мой лямбда-код:

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
        })
    };
}

1 Ответ

0 голосов
/ 27 января 2020

Существует 2 возможных точки отказа - Lambda получает поврежденные данные или вы повредили данные при отправке их на S3.

Отправка содержимого multipart / form-data в Lambda не является простой. Вы можете увидеть, как это сделать здесь .
После того, как вы сделали это и убедились, что ваши данные в Lambda верны, проверьте, правильно ли вы отправляете их на S3 (см. Документы и примеры для S3). ).

...