当前位置: 首页 > 知识库问答 >
问题:

如何将多部分/表单数据发送到ASP。NET核心Web API?

赵奕
2023-03-14

我试图发送图像和文本字段到APIendpoint,但我收到

不支持的内容类型'多部分/表单数据;边界=---------------------------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。使用变量名。

共有2个答案

尤钱明
2023-03-14

下面是一个你正在寻找的工作示例

控制器:

[HttpPost]
public async Task<IActionResult> SaveFile([FromForm] IFormFile file) {
  // Your code here
}

在你的模型里:

public IFormFile File { get; set; }

更改异步任务

鄢子平
2023-03-14

也许您应该尝试使用[FromForm]属性装饰控制器输入和模型?请参见此处的更多信息:web api参数绑定。

在给定的示例中,您的控制器操作应该如下所示:

[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; }
 类似资料:
  • 问题内容: 我们想将图像文件作为multipart / form发送到后端,我们尝试使用html表单获取文件并将文件作为formData发送,这是代码 后端中的错误是 “嵌套异常为org.springframework.web.multipart.MultipartException:无法解析多部分servlet请求;嵌套异常为java.io.IOException:org.apache.tomc

  • 我将多部分表单数据发送到我的Web API,如下所示: 这是Web API: 如何读取字符串和流从请求体在我的Web API?

  • 我们想将图像文件作为multipart/form发送到后端,我们尝试使用html表单获取文件并将文件作为formData发送,下面是代码 后端中的错误是“嵌套异常是org.springframework.web.multipart.MultipartException:无法分析多部分servlet请求;嵌套异常是java.io.IOException:org.apache.tomcat.util.

  • 这是在服务器端作为接收的内容: 如何转换multipart Confont数据类型中的文章对象?我读到改造可能允许使用转换器为这个。就我对文档的理解而言,它应该是实现的东西。 多部分部件使用的转换器,或者它们可以实现来处理自己的序列化。 null

  • 我正在尝试用RestTemplate上传一个文件到带有Jetty的Raspberry Pi。在Pi上有一个运行的servlet: 这是我得到的输出: UI-elements.html已上传! org.springframework.web.multipart.support.StandardMultipartTtpServletRequest$StandardMultipartFile@47e76

  • 我有这个ASP。NET Web API方法,我想发布一个对象,同时发布一个文件! 我想调用它,所以我用小提琴手发送这个超文本传输协议请求: 标题: 身体: 我得到一个415错误代码与响应文本: {“message”:“此资源不支持请求实体的媒体类型‘multipart/form data’。”,“exceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“mu