開發隨筆記錄——關於Swagger無法上傳文件問題解決方案。


首先自己先創建一個SwaggerFileUploadFilter類集成IOperationFilter接口。接口可導入Swashbuckle.AspNetCore.SwaggerGen管理包。

    public class SwaggerFileUploadFilter : IOperationFilter
    {
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            //判斷上傳文件的類型,只有上傳的類型是IFormCollection的才進行重寫。
            if (context.ApiDescription.ActionDescriptor.Parameters.Any(w => w.ParameterType == typeof(IFormCollection)))
            {
                Dictionary<string, OpenApiSchema> schema = new Dictionary<string, OpenApiSchema>();
                schema["fileName"] = new OpenApiSchema { Description = "Select file", Type = "string", Format = "binary" };
                Dictionary<string, OpenApiMediaType> content = new Dictionary<string, OpenApiMediaType>();
                content["multipart/form-data"] = new OpenApiMediaType { Schema = new OpenApiSchema { Type = "object", Properties = schema } };
                operation.RequestBody = new OpenApiRequestBody() { Content = content };
            }
        }
    }

之后Startup.cs里面找到ConfigureServices方法,在該方法里面的services.AddSwaggerGen中添加如下代碼:

 options.OperationFilter<SwaggerFileUploadFilter>();

之后啟動測試即可了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM