【发布时间】:2019-06-10 13:13:33
【问题描述】:
我正在尝试创建一个控制器操作,它必须上传一些文件并将它们与一些字符串一起保存到数据库中。
对于上传文件,我使用FileFieldsInterceptor 和其他数据字符串 DTO。有用。
但我想大摇大摆地记录这个端点,但它不起作用。对于文件,我可以将@ApiImplicitFile 与@ApiConsumes('multipart/form-data') 一起使用,但对于其他正文参数,我尝试使用@ApiImplicitBody 装饰器,应用程序崩溃并在api-parameters.explorer.js 中出现错误。
如何通过@nestjs/swagger 模块将正文参数(文件除外)记录到multipart/form-data 中?
@Post()
@ApiOperation({ ...config.api.post })
@ApiConsumes('multipart/form-data')
@ApiImplicitFile({ name: 'file', required: true, description: 'Infographic file' })
@ApiImplicitFile({ name: 'file_preview', required: true, description: 'Infographic preview file' })
@ApiImplicitBody({ name: 'name', required: true, description: 'Infographic title', type: 'string' })
@UseInterceptors(FileFieldsInterceptor([
{ name: 'file', maxCount: 1 },
{ name: 'file_preview', maxCount: 1 },
],
{
storage: storageUpload('infographics'),
limits: {
fileSize: 20971520, // 20Mb
},
fileFilter: (req, file, cb) => {
const mimeTypeList = ['image/png', 'image/jpeg', 'application/pdf'];
return mimeTypeList.some(item => item === file.mimetype)
? cb(null, true)
: cb(null, false);
},
},
), new FilesValidationInterceptor())
upload(@UploadedFiles() files, @Body() createDto: CreateInfographicsDto) {
return this.infographicsService.create(files, createDto);
}
【问题讨论】:
-
很高兴这对您有所帮助。 :-) 不过,您不需要将部分答案复制到问题中。相反,您可以接受一个解决了您的问题的答案,或者不解决这个问题,然后等到您得到解决您问题的答案。看看stackoverflow.com/help/someone-answers
标签: javascript node.js typescript swagger nestjs