FromForm с IFormFile с использованием ядра Asp.net

Я хочу загрузить файл изображения с данными модели, поэтому я использую FromForm с IFormFile в Asp.net core апи.

[HttpPost]
public IActionResult AddData([FromForm] AddDataModel addDataModel, IFormFile formFile)
{
     // Logic here...
}

я использую Angular 7 в передней части. Я добавляю данные модели и файл в FormData и пытается отправить его, но это всегда все значения полей модели нулевые.

Как правильно решить эту проблему?

1 ответ

Решение

Форм-файл должен быть внутри вашего AddDataModel Csharp класс.

Как это

public class AddDataModel 
{
   public IFormFile File { get; set; }
   // more properties
}

Тогда в вашем angular-сервисе сделайте следующее

public add(model: AddDataModel): Observable<any> { // file can be passed as parameter or inside typescript model
   const formData = new FormData();
   // optional you can pass a file name as third parameter
   formData.append('file', model.file)
   // add more keys to the form-data
   return this.http.post<any>('my-http-url', formData);
}

Теперь обновите конечную точку

[HttpPost]
public IActionResult AddData([FromForm] AddDataModel addDataModel)
{
     // Logic here...
}

Теперь связыватель моделей ASP.NET Core отобразит файл формы, полученный из данных формы.

Редактировать:

Добавлен простой пример на github, готовый к клонированию.

Другие вопросы по тегам