.netCore Swagger 文件上传的友好提示

本人使用的是ABP netcore +Swagger环境。
在这之前,网上搜索到的解决方案都没有解决我的问题,swaggerUI上IFromFile内部的属性都展示到swagger上了。
网上解决的方法大同小异,在这就贴一篇作为比较http://www.cnblogs.com/intotf/p/10075162.html
使用效果前:

使用后效果:

话不多说,直接上代码

Swagger选项过滤器代码

using Microsoft.AspNetCore.Http;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;

namespace ZGBPurchase.Web.Host
{
    public class SwaggerFileUploadFilter : IOperationFilter
    {
        private static readonly string[] FormFilePropertyNames =
        typeof(IFormFile).GetTypeInfo().DeclaredProperties.Select(x => x.Name).ToArray();
        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 < 0)
            {
                return;
            }

            foreach (var fileParameter in fileParameters)
            {
                var formFileParameters = operation
                .Parameters
                .OfType<NonBodyParameter>()
                .Where(x => FormFilePropertyNames.Contains(x.Name))
                .ToArray();
                foreach (var formFileParameter in formFileParameters)
                {
                    operation.Parameters.Remove(formFileParameter);
                }

                operation.Parameters.Add(new NonBodyParameter
                {
                    Name = fileParameter.Name,
                    In = "formData",
                    Description = "文件上传",
                    Required = true,
                    Type = "file"
                });
                operation.Consumes.Add("multipart/form-data");

            }
        }
    }
}

  对startup.cs swagger配置修改

原文地址:https://www.cnblogs.com/huanfion/p/10712413.html

时间: 2024-10-24 14:06:58

.netCore Swagger 文件上传的友好提示的相关文章

自定义input文件上传 file的提示文字及样式

简单记录一下 效果图: 代码: 1 <input class="aload" type='button' value='上传附件' onClick='javascript:$("#hiddenFile").click();' /> 2 <input id='showFileName' type='text' readonly style="border: none;"/>   3 <input id='hiddenF

调查管理系统 -(8)增加Logo--Struts2文件上传

1.增加Logo 增加Logo即上传图片,因此使用到Struts2的文件上传功能.Struts2的文件上传依靠其FileUploadInterceptor(文件上传拦截器),其使用的依然是Apache提供的FileUpload文件上传组件(commons-fileupload.jar). 2.Struts2文件上传的使用步骤 Ⅰ.在 Jsp 页面的文件上传表单里使用 file 标签.如果需要一次上传多个文件,就必须使用多个 file 标签,但它们的名字必须是相同的. Ⅱ.在 Action 中新添

phpmyadmin导入数据库显示 此服务器禁止了文件上传

centos 服务器安装好phpmyadmin 在文件上传的时候提示  此服务器禁止了文件上传 解决的方法: 1:首先登陆 phpmyadmin 2:进入界面 点击 用户账户(版本不一样 大概就是管理账号的位置) 3:查找自己的账号 修改 host name (localhost) 为 (%) 重启服务器 再去远程访问phpmyadmin 提示可以导入数据库文件了,解决了这个错误

.Net neatupload上传控件实现文件上传的进度条

1. 引入bin文件 (可以到neatupload官网下载,也可以到教育厅申报系统中找) 2. 将控件加入到工具栏,在工具栏中点鼠标右键,如图: 3. 加入neatuplaod这个文件夹(可以到neatupload官网下载,也可以到教育厅申报系统中找) 4. Webconfig的配置(3个地方) <configSections>配置节下配置: <!--配置NeatUpload sectionGroup配置节--> <sectionGroup name="system

PHP异常处理类(文件上传提示)

知识点: 大部分时候我们的代码总有各种各样的bug,新手程序员(比如我)最经常的工作就是不停的报错和echo变量,一个好的异常处理类可以帮我们更快+更容易理解报错代码的问题,同时,异常处理还可以避免一些因为程序错误而泄露网站重要信息内容的提示(比如文件报错,会弹出根目录),此外异常处理还可以协助项目上的正则验证,文件上传提示,访问权限控制等提高项目体验的功能. 代码: <?phpheader("Content-type: text/html; charset=utf-8");/*

基于 WebSocket 的聊天和大文件上传(有进度提示)完美实现

大家好,好久没有写文章了,当然不是不想写,主要是工作太忙,公司有没有网络环境,不让上网,所以写的就少了.今天是2019年的最后一天,明天就要开始新的一年,当然也希望自己有一个新的开始.在2019年的最后一天,写点东西,作为这一年的总结吧!写点啥呢?最近有时间,由于公司的需要,需要实现一个自己的.Web版本的聊天工具,当然也要能传输文件.经过两个星期的无网络.艰苦的学习,终于写出了一个最初的版本.在公司里面里面已经生成正式版本了,很多类型都进行了抽象化,支持注册,头像,私信,群聊,传输大文件,类似

笨鸟先飞之Java(一)--使用struts2框架实现文件上传和下载

不管是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个常用功能会有很多种解决方式,但是struts2的框架却能给我们一个比较简单的方式,下面就一起来看吧: 文件上传: 首先来看实现上传功能的表单,Index.jsp: <span style="font-family:FangSong_GB2312;font-size:18px;"><%@ page language="java" contentType=&q

文件上传小技巧/原生态【html篇】

引语:大家都知道,html中上传文件就一个input,type=file就搞定了.但是,这个标签的样式,实在不值得提点什么,要改动他的样式,恐怕也是较难的.但是其实挺简单,今天就来说说上传文件小技巧吧! 1. 怎样自定义样式? 1. 只管按照自己喜欢看到的样式去定义即可,如<a href='javascript:;' class='upload-button'></a>,可以是背景图片效果,可以是文字指示,总之想怎么改怎么改!有了按钮,还需要一个文件名容器,用来存放选择上传文件时的

Android OkHttp文件上传与下载的进度监听扩展

相信大家对OkHttp也是相当的熟悉了,毕竟是Square的东西,对于其种种优点,这里也不再叙说.优秀是优秀,但是毕竟优秀的东西给我们封装了太多,那么问题来了,我们使用OkHttp作为我们的网络层,简单地进行GET/POST请求是毫无问题.近日看了产品的设计稿,毛估估会有文件的上传与下载的需求,如果使用OkHttp作为网络层进行封装,你会惊讶的发现,简直封装的太"完美"了.如果现在有这么一个需求,要求对文件进行上传或下载,但是在上传或者下载前,你需要给用户一个友好的提示,在上传或者下载