ASP.NET Core Web API IFormFile为空,发送FormData请求时

时间:2017-05-10 10:17:58

标签: multipartform-data asp.net-core-webapi fetch-api iformfile

我正在使用Aurelia Fetch Client向Web API端点发送文件上载请求。但IFormFile是空的所有磁贴。我的代码如下。

客户端

const formData = new FormData();
formData.append("files", account.statement);

const response = await this.http.fetch(url, { method: "POST", body: formData 
});

Web API端点

[HttpPost]
public IActionResult Save    ()
{
    var files = Request.Form.Files;
}

文件始终为null。我按照这个post进行了操作,并按照提到的方式进行了操作。但仍然无法弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:1)

我找到了一种使用DTO执行此操作并将上载的文件指定为FormData中的File对象的方法。这是因为我需要使用File对象发送其他字段值。

服务器

使用所需属性创建DTO对象。

public class SaveAccountRequest
{
public string AccountName { get; set; }
public IFormFile Statement { get; set; }
}

将DTO添加为控制器端点中的接受参数。

[HttpPost]
public IActionResult SaveAccount(SaveAccountRequest saveAccountRequest)
{
//you should be able to access the Statement property as an IFormFile in the saveAccountRequest.
}

客户端

将所有属性附加到FormData对象,并确保根据服务器端DTO中使用的名称命名它们。

const formData = new FormData();
formData.append("accountName", accountName);
formData.append("statement", saveBankAccountRequest.primaryCurrencyId);

将数据发布到SaveAccount端点。我使用fetch API发布数据,但是一个简单的帖子也应该有用。

this.http.fetch(<api endpoint url>, { method: "POST", body: formData });