【问题标题】:tsoa-swagger: file parameter is always undefined in uploadtsoa-swagger:上传时文件参数始终未定义
【发布时间】:2021-11-22 23:41:57
【问题描述】:

Tsoa nodejs文件上传有问题

我基于tsoa documentation编写了方法,但输出变量始终未定义

这是我的方法

  @Post('/uploadNewExporterTemplate')
  public async uploadNewExporterTemplate(
    @Query() templateName: string,
    @Query() unit: string,
    @Query() testWith: string,
    @UploadedFile() file: Express.Multer.File,
  )  {

    const mul = multer()

    
    console.log(file,unit,testWith);
    
    return {stat:"Ok",ss:templateName}
  }

这就是大摇大摆的结果

最后是调试结果

【问题讨论】:

标签: node.js typescript express multer tsoa


【解决方案1】:

我不知道为什么,但根据提供的 Swagger UI 屏幕截图,您的 file 字段位于 Request body 部分,但其余字段位于 Parameters 部分。据我所知,所有字段都应该在一个名为 Request bodyParameters 的部分中。

我建议您尝试将Query() 更改为FormField(),相应地更改为tsoa docs

如果以上没有帮助,我有一些建议:

  1. 检查生成的路由文件中的内容。 tsoa 应该会添加一些 multer 逻辑。
  2. 将您生成的swagger.jsonthe Swagger example 中的the one provided 进行比较。
  3. 尝试在 Swagger UI 之外运行请求(例如:Postman)或使用 DevTools 检查 Swagger UI 在后台执行的操作(网络选项卡,检查请求)。

【讨论】:

  • 谢谢亲爱的,我通过添加一个自定义中间件来从带有标签@UploadedFile()的请求中接收和准备文件以在swagger界面中显示输入文件来解决了这个问题。所以我认为问题出在默认的 tsoa 中间件...我在 TSOA 存储库中创建了一个带有错误 https://github.com/lukeautry/tsoa/issues/1099 的问题
猜你喜欢
  • 2021-05-14
  • 2017-03-29
  • 2020-09-06
  • 2021-12-28
  • 2014-05-19
  • 2017-07-09
  • 2015-05-29
  • 2021-11-21
  • 2018-08-04
相关资源
最近更新 更多