我正在尝试用NestJS创建一个文件上传API的swagger文档。
这是我目前在控制器中拥有的内容:
@ApiTags('files')
@Controller('files')
export class FilesController {
@ApiConsumes('multipart/form-data')
@ApiCreatedResponse({description: "This api creates a file in the system"})
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file, @Body() fileInfo: UploadFileDto) {
console.log(file);
console.log(fileInfo);
}
}
在我DTO文件中:
import { IsString } from 'class-validator'
import { ApiProperty } from '@nestjs/swagger'
export class UploadFileDto {
@IsString()
communityName: string
@IsString()
type: string
@ApiProperty({type:"file"})
file: any;
}
这样一来,它就可以 swagger 地展示一切但是,正如您所看到的,在我的DTO类和函数变量中有一个冗余的“file”变量。如果我从DTO中删除“file”属性,那么swagger UI不会将此参数识别为文件输入。如果我从函数参数中删除它,然后它显示在swagger UI中,但是控制器没有接收到上传的文件。有什么方法可以纠正这个问题吗?
- 谢谢-谢谢
1条答案
按热度按时间mfuanj7w1#
我刚刚遇到了同样的问题,多亏了你,我实际上解决了我的问题。
我的控制器如下所示
还有我的DTO
注意,唯一真实的的变化是在DTO的
@ApiProperty()
中。