.NET Core Web API如何为Swagger UI添加文件上传按钮?
如何为Swagger UI添加文件上传按钮(Swashbuckle + ASP.NET Core Web API)
我之前也碰到过这个问题!默认Swashbuckle对IFormFile的展示确实不太友好,手动填字段完全没法测试上传功能,不过只要做两个关键配置就能搞定,步骤很简单:
1. 给上传接口添加[Consumes]特性
文件上传需要使用multipart/form-data格式,必须在你的Post方法上加上这个特性,告诉Swagger该用表单上传的方式渲染接口:
[Produces("application/json")] [Route("[controller]")] public class FilesController : Controller { [HttpPost] [Consumes("multipart/form-data")] // 关键:指定请求格式为multipart表单 public IActionResult Post(IFormFile file) { // 你的文件处理逻辑... return Ok(new { Message = $"文件 {file.FileName} 上传成功,大小:{file.Length} 字节" }); } }
2. 配置Swagger生成器识别IFormFile
在你的API启动配置文件(.NET 6+是Program.cs,旧版本是Startup.cs)里,找到AddSwaggerGen的配置块,添加对IFormFile的映射,让Swagger把它识别为文件上传控件:
builder.Services.AddSwaggerGen(c => { // 配置Swagger文档信息,根据你的需求修改 c.SwaggerDoc("v1", new OpenApiInfo { Title = "文件上传API", Version = "v1" }); // 把IFormFile映射为二进制文件类型,Swagger UI就会显示上传按钮 c.MapType<IFormFile>(() => new OpenApiSchema { Type = "string", Format = "binary" }); });
验证效果
重启你的API项目,打开Swagger UI页面找到Files控制器的Post接口,现在你会看到一个文件选择按钮,直接选择本地文件就能测试上传功能了,不用再手动填那些繁琐的IFormFile字段!
如果你的接口支持上传多个文件(比如参数是IEnumerable<IFormFile> files),这个配置同样适用,Swagger UI会显示多个文件上传控件。
内容的提问来源于stack exchange,提问作者Nick N.
相关产品推荐
相关产品推荐

