我有以下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:
- '*/*'
添加后:
provider:
apiGateway:
binaryMediaTypes:
- '*/*'
制作deploy后在lambda AWS]中工作,但仍无法使用sls offline start
脱机工作,这可能是他们代码中的错误,或者我应该添加其他内容使其脱机工作