我正在尝试将图像和文本字段发送到API端点,但是我收到了不支持的内容类型'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)
该方法运行,但是info对象上的属性为空 :(
更新: 解决方案是不要使用JsonProperty PropertyName。直接使用变量名即可。
public void SaveUser(IFormCollection collection)
。请参考此链接:https://stackoverflow.com/questions/53825794/webapi-is-it-possible-to-post-an-iformcollection-and-object-in-an-action - Khai Nguyen