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, готовый к клонированию.