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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。