src/Library/NetPro.Swagger/SwaggerFileUploadFilter.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.AspNetCore.Http;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System;
using System.Collections.Generic;
using System.Linq;

namespace NetPro.Swagger
{
    public class SwaggerFileUploadFilter : IOperationFilter
    {
        private static readonly string[] FileParameters = new[] { "ContentType", "ContentDisposition", "Headers", "Length", "Name", "FileName" };
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            if (!((context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) ||
                context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase)) && context.ApiDescription.ParameterDescriptions.Any(s => s.Type == typeof(IFormFile) || s.Type == typeof(IFormFileCollection))))
            {
                return;
            }
            RemoveExistingFileParameters(operation.Parameters);

            #region 留用
            //IDictionary<string, OpenApiSchema> pro = new Dictionary<string, OpenApiSchema>();
            //foreach (var item in context.ApiDescription.ParameterDescriptions)
            //{
            //	if (item.Type == typeof(IFormFileCollection) || item.Type == typeof(IFormFile))
            //	{
            //		pro.Add($"{item.Name}", new OpenApiSchema()
            //		{
            //			Description = "Select file",
            //			Type = "string",
            //			Format = "binary"
            //		});
            //	}
            //}
            //operation.RequestBody = new OpenApiRequestBody()
            //{
            //	Content =
            //		{
            //			["multipart/form-data"] = new OpenApiMediaType()
            //			{
            //				Schema = new OpenApiSchema()
            //				{
            //					Type = "object",
            //					Properties = pro
            //				}
            //			} ,
            //		}
            //};
            #endregion

            operation.Responses.Clear();
            operation.Responses.Add("200", new OpenApiResponse
            {
                Content = new Dictionary<string, OpenApiMediaType>
            {
                {
                    "multipart/form-data", new OpenApiMediaType
                    {
                        Schema = new OpenApiSchema
后面还有 19 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。