c# - 如何将多部分/表单数据发送到 ASP.NET Core Web API?

标签 c# asp.net asp.net-core asp.net-core-webapi

我正在尝试将图像和文本字段发送到 API 端点,但收到了

Unsupported content type 'multipart/form-data; boundary=---------------------------81801171514357


这是一个 ASP.NET Core 2.1 Web API。我有这个:
[HttpPost("/api/account"), Authorize]
public void SaveUser(UserModel info)
还有我的模型:
    [JsonProperty(PropertyName = "avatar")]
    [DataType(DataType.Upload)]
    public IFormFile Avatar { get; set; }

    [JsonProperty(PropertyName = "name")]
    [DataType(DataType.Text)]
    public string Name { get; set; }
然后我使用 axios :
    var formData = new FormData();
    formData.append("avatar", imageFile);
    formData.append("name", name);
    axios.post("/api/account", formData);
我希望这个方法能运行,而不是抛出异常。但是如何?我试图添加:
[Consumes("application/json", "multipart/form-data")]
但没有成功。
然后我尝试:
[HttpPost("/api/account"), Authorize]
public void SaveUser([FromForm]UserModel info)
该方法运行,但信息对象上的属性为空:(
更新:
解决方案,不要使用 JsonProperty PropertyName。使用变量名。

最佳答案

也许你应该尝试用 [FromForm] 装饰 Controller 输入和模型属性?
在此处查看更多信息:web api parameters binding .

在给定的示例中,您的 Controller 操作应如下所示:

[HttpPost("/api/account"), Authorize]
public void SaveUser([FromForm]UserModel info)

在模型中:
[FromForm(Name="avatar")]
public IFormFile Avatar { get; set; }

[FromForm(Name="name")]
public string Name { get; set; }

关于c# - 如何将多部分/表单数据发送到 ASP.NET Core Web API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411250/

相关文章:

asp.net - 使用 jQuery 将 ASP.NET 控件添加到页面

c# - ASP.NET Core MVC 在回发时检查授权

c# - jQuery 属性不起作用

c# - WPF中TabControl的ItemsSource绑定(bind)到List时如何设计TabPage?

c# - 在给定 HWND 的情况下如何获取窗口的子窗口?

javascript - 如何将服务器端类型传递给 asp.net webform 以供 javascript 使用

c# - 如何获取lambda表达式的值

c# - 限制用户上传大文件

javascript - 无法在循环下工作我的第二个评论框

c# - Azure KeyVault 配置提供程序在更改时重新加载值