Файл успешно загружен на s3 с использованием api без сервера, но не открывается (поврежден) - PullRequest
0 голосов
/ 06 апреля 2020

У меня следующий ts-код, который отправляет файл из API GraphQL в мою корзину AWS S3. он отлично работает, когда я запускаю проект, используя nodejs http lib, но когда я запускаю его, используя sls offline start или из aws лямбда-функции, он загружает файл, но не открывается (как поврежденный файл) - кроме текстовых файлов.

код:

const fileStream = data.createReadStream()
const uploadParams = {
                Bucket: 'XXX',
                Key: data.filename,
                Body: fileStream,
                ContentType: data.mimetype,
                ContentEncoding: data.encoding,
                ACL: 'public-read',
};
const result = await s3.upload(uploadParams).promise()

объект данных выглядит следующим образом:

{ filename: '11083626_830419647032756_2338667058698516671_n.jpg',
  mimetype: 'image/jpeg',
  encoding: '7bit',
  createReadStream: [Function: createReadStream] }

Я пытался преобразовать createReadStream в буфер и используйте вместо этого функцию s3.putObject (), но она все еще не работает.

Добавлены следующие конфигурации, чтобы разрешить двоичные файлы в serverless.yml, но все еще та же проблема:

provider:
    apiGateway:
        binaryMediaTypes:
            - '*/*'

1 Ответ

0 голосов
/ 06 апреля 2020

после добавления:

provider:
    apiGateway:
        binaryMediaTypes:
            - '*/*'
  • или вместо ' / ' в моем случае только 'multipart / form-data'

это сработало в lambda AWS после выполнения deploy , но все еще не работает в автономном режиме с использованием sls offline start, это может быть ошибка в их коде, или я должен добавить дополнительная функция, позволяющая работать в автономном режиме

...