如何为 IFormFile 结合其他属性大摇大摆地获取上传按钮?
How to get a upload button in swagger for IFormFile combined with other properties?
我用 Swagger 创建了一个 Asp.net core 3.1 web api 来将文件上传到服务器。以下代码运行良好:
[HttpPost("PostFile")]
public ActionResult PostFile(IFormFile uploadedFile)
{
var saveFilePath = Path.Combine("c:\savefilepath\", uploadedFile.FileName);
using (var stream = new FileStream(saveFilePath, FileMode.Create))
{
uploadedFile.CopyToAsync(stream);
}
return Ok();
}
当我尝试 运行 这个时,我大摇大摆地得到了一个漂亮的上传按钮。
但是,现在我想使用不同的模型。它与 IFormFile 一起具有更多属性。
public class FileUploadRequest
{
public string UploaderName { get; set; }
public string UploaderAddress { get; set; }
public IFormFile File { get; set; }
}
当我尝试使用此模型时,我在 Swagger 中看不到任何可帮助我在请求中附加文件的上传按钮。
出于某种原因,它将 IFormFile 显示为字符串。我怎样才能在这里获得上传按钮?
在ASP.NETCore WebAPI中,默认绑定application/json
格式的数据。但是你的模型需要的是 multipart/form-data
类型的数据。所以你需要 [FromForm]
属性来指定来源。
我在 ASP.NET Core 3.1:
中使用 Swashbuckle.AspNetCore
版本 5.6.3
[HttpPost]
public ActionResult PostFile([FromForm]FileUploadRequest model)
{
}
结果:
我用 Swagger 创建了一个 Asp.net core 3.1 web api 来将文件上传到服务器。以下代码运行良好:
[HttpPost("PostFile")]
public ActionResult PostFile(IFormFile uploadedFile)
{
var saveFilePath = Path.Combine("c:\savefilepath\", uploadedFile.FileName);
using (var stream = new FileStream(saveFilePath, FileMode.Create))
{
uploadedFile.CopyToAsync(stream);
}
return Ok();
}
当我尝试 运行 这个时,我大摇大摆地得到了一个漂亮的上传按钮。
但是,现在我想使用不同的模型。它与 IFormFile 一起具有更多属性。
public class FileUploadRequest
{
public string UploaderName { get; set; }
public string UploaderAddress { get; set; }
public IFormFile File { get; set; }
}
当我尝试使用此模型时,我在 Swagger 中看不到任何可帮助我在请求中附加文件的上传按钮。
出于某种原因,它将 IFormFile 显示为字符串。我怎样才能在这里获得上传按钮?
在ASP.NETCore WebAPI中,默认绑定application/json
格式的数据。但是你的模型需要的是 multipart/form-data
类型的数据。所以你需要 [FromForm]
属性来指定来源。
我在 ASP.NET Core 3.1:
中使用Swashbuckle.AspNetCore
版本 5.6.3
[HttpPost]
public ActionResult PostFile([FromForm]FileUploadRequest model)
{
}
结果: