NestJS 如何创建一个端点,除了一个字符串字段外,还要接受两个文件
问题描述
我正在使用NestJS 10。我想设计一个端点,它接受一个字符串字段和两个文件(命名为”frontImg”和”backimg”)。我已经创建了这个端点。
@Post()
@UseInterceptors(FileInterceptor('frontImg'), FileInterceptor('backImg'))
async create(
@Req() req: Request,
@Body('title') title: string,
@UploadedFiles(
new ParseFilePipe({
validators: [new FileTypeValidator({ fileType: 'image/jpeg' })],
}),
)
files: { frontImg: Express.Multer.File[]; backImg?: Express.Multer.File[] },
) {
...
}
但是当我尝试使用Postman向我的端点提交请求时
我从我的NestJS服务器得到了这个400响应…
{
"message": "Unexpected field",
"error": "Bad Request",
"statusCode": 400
}
如何正确设置我的NestJS端点来接受这两个文件?
解决方案
您将需要使用FileFieldsInterceptor
来处理上传到指定字段的文件。现在,您的控制器将如下所示:
@Post()
@UseInterceptors(FileFieldsInterceptor([{ name: 'frontImg', maxCount: 1}), { name: 'backImg', maxCount: 1}]))
async create(
@Req() req: Request,
@Body('title') title: string,
@UploadedFiles(
new ParseFilePipe({
validators: [new FileTypeValidator({ fileType: 'image/jpeg' })],
}),
)
files: { frontImg: Express.Multer.File[]; backImg?: Express.Multer.File[] },
) {
...
}