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

标签 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;
}

文件始终为空。我已关注此 post并已按照所述完成。但仍然无法弄清楚什么是错的。

最佳答案

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

服务器

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

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

在 Controller 端点中添加 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 来发布数据,但一个简单的帖子也应该有效。发送文件请求时,请确保将内容类型设置为多部分表单数据。
this.http.fetch(<api endpoint url>, { method: "POST", body: formData, content-type: 'multipart/form-data' });

关于multipartform-data - ASP.NET Core Web API IFormFile 为空,发送 FormData 请求时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43889629/

相关文章:

c# - ASP.NET CORE Web API - 删除操作未触发(404 未找到)

c# - 如何从 ActionExecutingContext 获取路由模板

TypeScript Fetch response.Json<T> - 预期 0 个类型参数,但得到 1 个

java - 通过rest Api接收图像文件

express - MultipartParser.end() : stream ended unexpectedly

NativeScript Vue 发送带有表单数据的请求(multipart/form-data)

javascript - ASP.NET Core WebAPI 安全注意事项

javascript - 不要在 api 上设置 POST 请求,得到 406 Not Acceptable

javascript - 在 javascript 中简单获取 GET 请求到 flask 服务器

c# - 如何使用 HttpClient 发布表单数据 IFormFile?