我正在尝试使用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}`