使用Asp.net Core与IFormFile一起使用FromForm

时间:2019-01-29 15:45:21

标签: angular asp.net-core iformfile

我想所以我使用上传使用模型数据的图像文件FromFormIFormFileAsp.net core API。

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

我在前端使用Angular 7。我加入模型数据和文件FormData,并尝试发送,但它总是所有的模型字段的值无效。

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

表单文件必须位于您的AddDataModel csharp类中。

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

然后在您的角度服务中,执行以下操作

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的modelbinder将映射从表单数据中检索到的表单文件。

编辑:

github上添加了一个简单的样本,准备将其克隆。