首页 > 解决方案 > tsoa-swagger:上传时文件参数始终未定义

问题描述

我对 Tsoa nodejs 文件上传有问题

我根据tsoa 文档编写了该方法,但输出变量始终未定义

这是我的方法

在此处输入图像描述

  @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.jstypescriptexpressmultertsoa

解决方案


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

我建议您尝试相应地更改Query()tsoa docsFormField()

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

  1. 检查生成的路由文件中的内容。tsoa 应该添加了一些 multer 逻辑。
  2. 将您生成的内容swagger.jsonSwagger 示例中提供的内容进行比较。
  3. 尝试在 Swagger UI 之外运行请求(例如:Postman)或使用 DevTools 来检查 Swagger UI 在引擎盖下的作用(网络选项卡,检查请求)。

推荐阅读