首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发送FormData请求时,ASP.NET核心Web API IFormFile为空

发送FormData请求时,ASP.NET核心Web API IFormFile为空
EN

Stack Overflow用户
提问于 2017-05-10 18:17:58
回答 1查看 4.5K关注 0票数 5

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

客户端

代码语言:javascript
运行
复制
const formData = new FormData();
formData.append("files", account.statement);

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

Web API端点

代码语言:javascript
运行
复制
[HttpPost]
public IActionResult Save    ()
{
    var files = Request.Form.Files;
}

文件始终为空。我已经遵循了这个post,并且已经按照前面提到的那样做了。但仍然找不到哪里出了问题。

EN

回答 1

Stack Overflow用户

发布于 2017-05-12 09:10:08

我想出了一种方法,使用DTO并将上传的文件指定为FormData中的file对象。这是因为我有其他字段值需要与File对象一起发送。

服务器

创建具有所需属性的DTO对象。

代码语言:javascript
运行
复制
public class SaveAccountRequest
{
    public string AccountName { get; set; }
    public IFormFile Statement { get; set; }
}

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

代码语言:javascript
运行
复制
[HttpPost]
public IActionResult SaveAccount([FromForm] SaveAccountRequest saveAccountRequest)
{
//you should be able to access the Statement property as an IFormFile in the saveAccountRequest.
}

客户端

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

代码语言:javascript
运行
复制
const formData = new FormData();
formData.append("accountName", accountName);
formData.append("statement", file);

将数据发送到SaveAccount端点。我使用fetch API来发布数据,但也可以使用简单的post。发送文件请求时,请确保将内容类型设置为分块表单数据。

代码语言:javascript
运行
复制
this.http.fetch(<api endpoint url>, { method: "POST", body: formData, content-type: 'multipart/form-data' });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43889629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档