c# - WebAPI HttpPost 将 IFormFile 和一个模型作为输入参数
问题描述
我想创建一个上传文件的方法 + 将 class\struct 的实例作为附加参数。
// Works
[HttpPost("test_1")]
public async Task<IActionResult> Test1(IFormFile file) { return Ok(); }
public struct MyModel
{
public int Value1 { get; set; }
public int Value2 { get; set; }
}
// Doesn't work
[HttpPost("test_2")]
public async Task<IActionResult> Test2(IFormFile file, MyModel model) { return Ok(); }
调用test_2
产生以下结果:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title": "Unsupported Media Type",
"status": 415,
"traceId": "8000000c-0007-fd00-b63f-84710c7967bb"
}
我应该如何修改test_2
方法以产生所需的结果?
解决方案
因为您的请求包含多个部分(文件和可选数据)。
所以把它改成 form-data 就可以用Api 上的[FromForm]来获取了。
尝试这个
public struct MyModel
{
public int Value1 { get; set; }
public int Value2 { get; set; }
public IFormFile Files { get; set; }
}
[HttpPost("test_2")]
public async Task<IActionResult> Test2([FromForm]MyModel model) { return Ok(); }
希望能帮助到你
推荐阅读
- javascript - Javascript 触摸事件在 Mobile Safari 中不起作用
- sql - SQL:是否可以在选择查询的列中返回表数据类型?
- sql - sql或excel映射
- python - 如何在 Beautiful Soup 中打印出表格行的所有单元格
- php - 获取将 BigQuery 的结果存储到 Google Cloud Storage 的作业的进度或状态
- firebase - 为小部件调用两个不同端点的最佳实践?
- r - r 如何使用 lpSolve 和限制选定的行
- mysql - 根据月份和日期从数据库中获取最新记录
- reactjs - 刷新页面后做出反应,参数在生产中显示为空白,但在本地工作正常
- listview - xamarin 表单:根据条件打开或关闭列表视图开关?