使用无服务器api成功将文件上传到s3,但无法打开(损坏)

问题描述 投票:0回答:1

我有以下ts代码,它们将文件提交自GraphQL API至我的AWS S3存储桶。当我使用nodejs http lib运行项目时,它可以完美运行,但是当我使用sls offline start或从aws lambda函数运行项目时,它将上传文件,但无法打开(像损坏的文件)-文本文件除外。

代码:

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:
            - '*/*'
amazon-web-services amazon-s3 aws-lambda graphql serverless-framework
1个回答
0
投票

添加后:

provider:
    apiGateway:
        binaryMediaTypes:
            - '*/*'
  • 或代替'/'在我的情况下只有'multipart / form-data'

制作deploy后在lambda AWS]中工作,但仍无法使用sls offline start脱机工作,这可能是他们代码中的错误,或者我应该添加其他内容使其脱机工作

© www.soinside.com 2019 - 2024. All rights reserved.