Swagger UI 不显示 ASP.NET Core Web API 中文件输入的上传按钮

问题描述 投票:0回答:1

我正在开发一个 ASP.NET Core Web API 项目,特别是使用 Microsoft 提供的

ASP.NET Core Web API
模板。我遇到了一个问题,即 Swagger UI 未显示需要文件作为输入的控制器操作的上传按钮。

设置和配置:

  1. 项目模板: 该项目是使用

    ASP.NET Core Web API
    模板创建的。这包括具有 Swagger 支持的默认
    WeatherForecast
    API。

  2. Program.cs
    中的 Swagger 配置:

    builder.Services.AddSwaggerGen();
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
  3. .csproj 文件:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <InvariantGlobalization>true</InvariantGlobalization>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
      </ItemGroup>
    </Project>
    
  4. WeatherForecastController.cs
    中的控制器操作:

    [HttpPost]
    public IActionResult UploadFile([FromForm] IFormFile file)
    {
        return Ok();
    }
    

问题:

通过 Visual Studio 作为 HTTP 实例启动应用程序后,Swagger UI 不会显示文件输入的预期上传按钮。当前的 Swagger UI 如下所示:

预期结果:

我期待看到类似这样的上传按钮:

有人可以建议为什么上传按钮没有出现以及我如何解决这个问题吗?

.net file-upload swagger swagger-ui
1个回答
1
投票

发现问题...

对于使用

Swashbuckle.AspNetCore
和 .net 8 的
6.5
版本 - 处理表格和文件上传。只需省略
[FromForm]
即可。根据 Microsoft 官方文档,该属性看起来不应用于 .net core 2.2+。

[HttpPost]
[Route("")]
public IActionResult Post(IFormFile file)
{
}
© www.soinside.com 2019 - 2024. All rights reserved.