Теперь, когда он разбирается в комментариях, я опубликую этот ответ, чтобы помочь другим, возможно.
Форма многокомпонентного контента отправляет данные обратно на сервер, как этот "
---------------------------acebdf13572468
Content-Disposition: form-data; name="file";
Content-Type: image/*
<@INCLUDE *App.jpg*@>
---------------------------acebdf13572468
Content-Disposition: form-data; name="TextField";
Content-Type: application/octet-stream
Text Value
---------------------------acebdf13572468
Content-Disposition: form-data; name="JsonField";
Content-Type: application/json
{
"Json" : "Object"
}
---------------------------acebdf13572468--
Каждыйчасть, разделенная линией разделителя (т. е. ---------------------------acebdf13572468
), представляет собой собственное содержимое, следовательно, составное.
Вы можете отправлять данные в виде json в одном поле, как показано выше, или отправлять текст или что-либо еще. ОбычноБраузеры отправляют каждый элемент управления в отдельной части. Данные такого типа можно прочитать через механизм связывания модели ASP.Net, указав [FromForm]
в аргументах контроллера.
Или в этом конкретном случае вы можете прочитать их с помощьюthing.ReadAsStreamAsync();
и thing.ReadAsStringAsync();
- Правка -
Таким образом, вышеупомянутый метод полезен при прямом чтении данных или иным образом не в проектах MVC. Если вы используетеMVC вы можете легко прочитать, как это.
Давайте представим, что у вас есть модель, подобная
public class Model
{
public string Title { get; set; }
}
, тогда вы бы создали контроллер и действие, подобное этому:
public class MainController : Controller
{
[HttpPost]
public async Task<IActionResult> UploadImage([FromForm]Model model)
{
var files = Request.Files;
var title = model.Title
//And you can save or use files and content at the same time.
}
}
Обычно это то, что выв сценарии MVC, и если вы используете Razor или Pages на стороне клиента, вам даже не нужно указывать атрибут [FromForm].
Надеюсь, это вам поможет.
Отказ от ответственности. Я написал все это в браузере. Может содержать синтаксис и другие ошибки.