HttpPost WebAPI принимает IFormFile и модель в качестве входных параметров - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу создать метод, который загружает файл + принимает экземпляр класса \ 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, чтобы получить требуемый результат?

1 Ответ

4 голосов
/ 30 сентября 2019

Поскольку ваш запрос содержит несколько частей (файл и дополнительные данные).
Поэтому измените его на данные формы, и вы можете получить их с помощью [FromForm] в Api.
Попробуйте это

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(); }

Надеюсь, это поможет

...