我有一个带有Swagger 3.0的ASP.NET Core 2应用程序,我想测试来自Swagger UI的文件上传的POST操作.
文件上传器控制器:
[ApiController]
public class FileUploadController : ApiControllerBase
{
private readonly IFileUploader _fileUploader;
public FileUploadController(IFileUploader fileUploader, ILogger<FileUploadController> logger) : base(logger)
{
_fileUploader = fileUploader;
}
[HttpPost]
[Route(nameof(UploadFile))]
public FileUploadResult UploadFile(IFormFile uploadedFile)
{
return _FileUploader.UploadFile(Request.Form.Files[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
阅读Swagger文档和其他主题我发现我需要自定义IOperationFilter,所以这就是我提出的:
public class FileUploadOperationFilter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
if (operation.OperationId.ToLower() == "apifileuploaduploadfilepost")
{
operation.Parameters.Add(new NonBodyParameter()
{
Name = "file",
In = "formData",
Description = "Upload File",
Required = true,
Type = "file"
});
operation.Consumes.Add("multipart/form-data"); …Run Code Online (Sandbox Code Playgroud)