我正在使用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;
}
文件始终为空。我已经遵循了这个post,并且已经按照前面提到的那样做了。但仍然找不到哪里出了问题。
发布于 2017-05-12 09:10:08
我想出了一种方法,使用DTO并将上传的文件指定为FormData中的file对象。这是因为我有其他字段值需要与File对象一起发送。
服务器
创建具有所需属性的DTO对象。
public class SaveAccountRequest
{
public string AccountName { get; set; }
public IFormFile Statement { get; set; }
}
将DTO添加为控制器端点中接受的参数。
[HttpPost]
public IActionResult SaveAccount([FromForm] 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", file);
将数据发送到SaveAccount端点。我使用fetch API来发布数据,但也可以使用简单的post。发送文件请求时,请确保将内容类型设置为分块表单数据。
this.http.fetch(<api endpoint url>, { method: "POST", body: formData, content-type: 'multipart/form-data' });
https://stackoverflow.com/questions/43889629
复制相似问题