NestJS 如何创建一个端点,除了一个字符串字段外,还要接受两个文件

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 如何创建一个端点,除了一个字符串字段外,还要接受两个文件

我从我的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[] },
  ) {
    ...
  }

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程