.Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了。

我们知道,如果.net core 2.x使用swagger上传文件是需要写个操作过滤器的类。

public class SwaggerFileUploadFilter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) &&
!context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
{
return;
} var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList(); if (fileParameters.Count < )
{
return;
} operation.Consumes.Add("multipart/form-data"); foreach (var fileParameter in fileParameters)
{
var parameter = operation.Parameters.Single(n => n.Name == fileParameter.Name);
operation.Parameters.Remove(parameter);
operation.Parameters.Add(new NonBodyParameter
{
Name = parameter.Name,
In = "formData",
Description = parameter.Description,
Required = parameter.Required,
Type = "file"
});
}
}
}

需要在startup类中配置:

这样上传文件的api就有选择文件的按钮了:

然后升级到.net core 3.0 ,swagger目前4.x版本不支持,只能下5.x的预览版,然后一堆报错。首先配置中的Info 需要改成OpenApiInfo:

  services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Web API", Version = "v1" });
var xmlPath = Path.Combine(AppContext.BaseDirectory, "swagger.xml");
c.IncludeXmlComments(xmlPath);
c.OperationFilter<SwaggerFileUploadFilter>();
});

改成:

  services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Web API", Version = "v1", Description = "Web API" });
var xmlPath = Path.Combine(AppContext.BaseDirectory, "swagger.xml");
c.IncludeXmlComments(xmlPath);
});

而且swagger 5.0版本不需要手动写过滤器类,也就是

SwaggerFileUploadFilter

上文提到的这个类。

直接正常写api就可以了,不过IFormFile参数一定不要加[FromBody]这个特性。就像这样:

        /// <summary>
/// 上传文件
/// </summary>
/// <param name="formFile">文件</param>
/// <returns></returns>
[HttpPost]
public IActionResult test(IFormFile formFile)
{
return Ok("靓仔");
}

然后打开swagger就可以看到:

结束!

.Net core3.0 集成swagger5.0上传文件的更多相关文章

  1. 关于 tp5.0 阿里云 oss 上传文件操作

    tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题  应该是移动后的路劲(相对于服 ...

  2. AFNetworking 3.0携带參数上传文件Demo

    一.服务端代码: 服务端是java用国产nutz搞的,实际mvc框架都大同小异.就是提交文件的同一时候还带了个表单參数 @AdaptBy(type=UploadAdaptor.class, args= ...

  3. spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间

    1.springmvc支持文件上传,需要在spring-mvc.xml配置文件中加上下面的一段话: <!-- 支持上传文件 --> <bean id="multipartR ...

  4. 百度 ueditor 1.2.0 注意事项 ,上传文件问题

    <script type="text/javascript" src="script/ueditor/ueditor.config.js" charset ...

  5. Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛

    相关链接 UEditor:http://ueditor.baidu.com/website/​ 下载地址:http://ueditor.baidu.com/website/download.html# ...

  6. PHP socket上传文件图片

    最近了解了下下socket方面的东西,想做一个socket上传文件的例子. 在网上搜了搜代码执行后,图片数据传输了一半,图片的下半部分是灰色的.然后就自己仿着搜来的代码和php.net 中socket ...

  7. 微信小程序小技巧系列《二》show内容展示,上传文件编码问题

    作者:gou-tian 来自:github show内容展示 尝试用微信小程序的template组件实现.同时,尝试页面间转跳时传参,在目标页面引入模板文件实现 写的更少,做的更多 篇幅有限详细代码此 ...

  8. 一般处理程序上传文件(html表单上传、aspx页面上传)

    html 表单上传文件        一般处理程序由于没有 apsx 页面的整个模型和控件的创建周期,而比较有效率.这里写一个用 html 表单进行文件上传的示例.        1. 表单元素选用 ...

  9. HTML5 读取上传文件(转载)

    另参考 http://www.jianshu.com/p/46e6e03a0d53 1 filelist对象与file对象: <input type="file" id=&q ...

随机推荐

  1. 第08组 Beta冲刺(4/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ? 测试新功能中 展示GitHub当日代码/文档签入记录 接下来的计划 ...

  2. ECMAScript6-2

    1.模板字串.箭头函数 1.1.模板字串 传统js,输出模板 var str='<b>姓名:</b>'+ '<span>lxr</span>'; con ...

  3. R程序书写规范

    suppressMessages(library(xxx)) # 导入所需的R包 suppressMessages(library(xxx)) # 导入所需的R包 fucntion02 <- f ...

  4. mysql(二)事务 & 事务的实现 & 锁

    参考文档: mvcc:https://www.cnblogs.com/chenpingzhao/p/5065316.html 事务的实现:https://www.linuxidc.com/Linux/ ...

  5. Spring AOP 代理类,BeanNameAutoProxyCreator cglib

    BeanNameAutoProxyCreator支持拦截接口和类,但不支持已经被jdk代理过的类$Proxy8.使用cglib才能代理,如下 <!-- 通过bean的名字来匹配选择要代理的bea ...

  6. 免费https证书

    https://certbot.eff.org/lets-encrypt/ubuntuother-nginx https://ruby-china.org/topics/31942 https://l ...

  7. 使用软件FileZilla, 通过sftp协议实现windows与linux系统传输文件

    前提: windows 7 /windows8 / windows 10系统已安装FileZilla软件: 我们还有一个Linux系统,系统上安装了ssh服务,并且开放了22端口. 操作: 1.打开软 ...

  8. ssh服务器安装测试

    ssh服务器搭建 作用:用于远程登录到服务器 (1)服务器端 安装ssh: $ sudo apt-get install openssh-server 查看ssh是否已经安装: $ sudo apti ...

  9. 内网服务器离线编译安装mysql5.7并调优

    目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...

  10. 【简记】修改Docker数据目录位置,包含镜像位置

    为啥要改? Docker安装后默认下载的位置在/var/lib/docker ,如果/var分区没有独立分出来,Linux下默认是与/根分区在一起.一般我们装Linux系统的时候,除了做邮件服务器外, ...