原文:https://github.com/domaindrivendev/Swashbuckle/issues/120 原文:https://www.cnblogs.com/yaosj/p/10343185.html
1、FormAttribute,添加一个特性类,用于标识该方法是否支持文件上传
[AttributeUsage(AttributeTargets.Method)]
public sealed class FormAttribute : Attribute
{
public string Name { get; private set; }
public string Description { get; private set; }
public FormAttribute(string name, string description)
{
Name = name;
Description = description;
}
}
2、HttpAuthHeaderFilter,在swagger中,显示文件上传
public class HttpAuthHeaderFilter : IOperationFilter
{
void IOperationFilter.Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
var requestAttributes = apiDescription.GetControllerAndActionAttributes<FormAttribute>();
foreach (var attr in requestAttributes)
{
operation.parameters.Add(new Parameter
{
description = attr.Description,
name = attr.Name,
@in = "formData",
required = true,
type = "file"
});
operation.consumes.Add("multipart/form-data");
}
}
}
3、SwaggerConfig,注入到swagger的配置文件中
取消注释 c.OperationFilter<AssignOAuth2SecurityRequirements>();;
修改为 c.OperationFilter<HttpAuthHeaderFilter>();
4、HomeApiController,创建一个测试
[HttpPost, AllowAnonymous, Form("ImportImage", "Upload image file")]
public string Upload()
{
return HttpContext.Current.Request.Files[0].FileName;
}