You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core Web API使用Swagger上传xlsx文件报Unsupported Media Type错误

问题根因
  1. 全局配置[Consumes("application/json")]会强制所有接口仅接收application/json类型的请求,而文件上传请求的Content-Type是multipart/form-data,匹配失败就会返回Unsupported Media Type错误,你遇到的报错如下:
    报错示意图
  2. 移除全局配置后Swagger仍无法正常显示上传控件,是因为Swagger未正确识别接口的文件接收参数,或者你之前的全局Consumes还残留了局部配置,异常界面如下:
    移除配置后示意图1
    移除配置后示意图2
解决方案

步骤1:移除全局[Consumes("application/json")]配置

不要用全局强制Content-Type的方式解决Swagger授权问题,该方式兼容性极差,会影响所有非JSON接口的正常使用。

步骤2:给文件上传接口单独配置接收类型

上传接口需要显式声明支持multipart/form-data,参数用IFormFile接收文件,示例代码:

[ApiController]
[Route("api/[controller]")]
public class FileController : ControllerBase
{
    [HttpPost("upload-excel")]
    [Consumes("multipart/form-data")] // 仅当前接口接收表单数据
    public async Task<IActionResult> UploadExcel([FromForm] IFormFile excelFile)
    {
        // 校验文件格式
        if (excelFile == null || excelFile.Length == 0)
            return BadRequest("请上传有效文件");
        if (Path.GetExtension(excelFile.FileName).ToLower() != ".xlsx")
            return BadRequest("仅支持.xlsx格式的Excel文件");

        // 你的Excel解析、业务处理逻辑
        using var stream = excelFile.OpenReadStream();
        // 可配合EPPlus/NPOI等组件解析stream内容

        return Ok("上传解析完成");
    }
}

步骤3:正确修复Swagger授权报错

原来的授权报错不要用全局Consumes处理,在Swagger服务注册时配置正确的安全规则即可,.NET 6+的Program.cs配置示例:

// 注册Swagger服务
builder.Services.AddSwaggerGen(opt =>
{
    opt.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" });

    // 配置JWT授权(如果是Cookie/ApiKey等其他授权方式可对应调整)
    opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Description = "请输入JWT令牌,格式:Bearer {你的token}",
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT",
        Scheme = "Bearer"
    });

    opt.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            Array.Empty<string>()
        }
    });
});

步骤4:验证效果

配置完成后重启项目,Swagger的上传接口会自动显示文件选择控件,上传时Content-Type自动为multipart/form-data,不会再报类型不支持错误,同时Swagger的授权功能也正常可用。

内容的提问来源于stack exchange,提问作者wacepar786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:57:00