Как сохранить данные многочастной формы в файл в AWS Lambda - PullRequest
0 голосов
/ 23 октября 2018

Я пишу api без сервера, используя Node.js и Typescript.Я хочу отправить файл .xlsx со стороны клиента и сохранить файл в корзине S3.
Я попытался использовать пакет npm busboy .И файл, сохраненный в корзине S3, не может быть прочитан (поврежден или записан не полностью).Похоже, я неправильно написал файл.
Вот мой код

import * as busboy from 'busboy';
import AWS = require('aws-sdk');
import { S3 } from 'aws-sdk';

export const saveExcel: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {

      const contentType = event.headers['Content-Type'] || event.headers['content-type'];
      const bb: busboy.Busboy = new busboy({ headers: { 'content-type': contentType } });

      bb.on('file', function (fieldname, file, filename, encoding, mimetype) {
        file
          .on('data', data => {
            const params: S3.PutObjectRequest = {
              Bucket: 'bucket-name',
              Key: filename,
              Body: data
            };
            s3.upload(params, function (err, data) {
              if (err) {
                console.log(err);
              } else {
                console.log(data);
              }
            })
          })
          .on('end', () => {
            console.log("done");
          });
      });

      bb.end(event.body);
}

Что я делаю не так?Или мне нужно попробовать какую-нибудь другую библиотеку?

...