文件已使用无服务器 api 成功上传到 s3,但无法打开(已损坏)
File uploaded successfully to s3 using serverless api but it doesn't open(corrupted)
我有以下 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:
- '*/*'
- 或仅在我的情况下代替“/”'multipart/form-data'
它在 lambda AWS 中运行 deploy,但仍然无法使用 sls offline start
离线工作,这可能是一个错误在他们的代码中或者我应该添加额外的东西让它离线工作
我有以下 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:
- '*/*'
- 或仅在我的情况下代替“/”'multipart/form-data'
它在 lambda AWS 中运行 deploy,但仍然无法使用 sls offline start
离线工作,这可能是一个错误在他们的代码中或者我应该添加额外的东西让它离线工作