通过嵌套js将图像从AWS Lambda上传到s3存储桶的问题

时间:2020-01-29 17:21:23

标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway nestjs

我正在尝试使用API​​ Gateway和Lambda构建REST API。我需要客户端通过API网关将图像连同其他字段一起上载到Lambda。我正在使用Lambda函数代理集成,正在使用nest js并将其转换为lambda。它在localhost上运行良好,但是当我从lambda尝试时,它可以正确接收其他字段的数据。但是图像已损坏,其大小几乎增加了一倍。

这是我的嵌套js代码:

控制器发布请求为

@Post()
@UsePipes(ValidationPipe)
@UseInterceptors(FilesInterceptor('image'))

async addNews(@Body() NewsDataDTO:NewsDataDTO,@UploadedFiles() file){  

if(file[0]){
   NewsDataDTO.image =  await 
   this.imageUploadService.fileupload(file[0].
   buffer,uuid()+file[0].originalname,file[0].mimetype);

   const image=sharp(file[0].buffer);

   let newImage= await image.resize(200,200).toBuffer();

   NewsDataDTO.thumbnailImage =  await 
   this.imageUploadService.fileupload(newImage,uuid()+file[0].
   originalname,file[0].mimetype);
}  

和imageUploadService代码在这里:

async fileupload(file: Buffer, urlKey: string, mimetype: any) {

const params = {
  Body: file,
  Bucket: 'bucketName',
  Key: urlKey,
  ContentType: mimetype,

};

const image=await s3
.putObject(params)
.promise();

return `https://bucketUrl/${urlKey}`

0 个答案:

没有答案