【问题标题】:asp.net core 2.2 posting file results in http/415 unsopported mediatypeasp.net core 2.2 发布文件导致 http/415 不支持的媒体类型
【发布时间】:2023-03-17 10:33:01
【问题描述】:

来自邮递员,我正在尝试将文件发布到 asp.net core 2.2 api-controller。

POST /api/epd/noshow/uploadfile HTTP/1.1
Host: localhost:44361
User-Agent: PostmanRuntime/7.11.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 3d633228-2554-442b-84f4-4e8214972886,a8f994f4-973e-411f-b96b-778af2c082b4
Host: localhost:44361
accept-encoding: gzip, deflate
content-type: multipart/form-data; boundary=--------------------------201375848683546790642901
content-length: 237
Connection: keep-alive
cache-control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW


Content-Disposition: form-data; name="file"; filename="C:\temp\caldr.json


------WebKitFormBoundary7MA4YWxkTrZu0gW--

api-controller 方法

[HttpPost]
[AllowAnonymous]
public IActionResult UploadFile([FromForm]IFormFile file)
{
    return Ok();
}

我已经尝试过FromForm、FromBody,什么都没有。在 postman 中设置 content-type,在 postman 中不设置 content-type 总是返回相同的错误。

有什么建议吗?

【问题讨论】:

  • 为什么设置content-type 的标头指定boundary 为--------------------------201375848683546790642901 而设置Content-Type 的另一个标头指出边界是----WebKitFormBoundary7MA4YWxkTrZu0gW?

标签: c# postman asp.net-core-webapi asp.net-core-2.2 http-status-code-415


【解决方案1】:

这比预期的要简单 :) 您以表单数据的形式发送请求正文。此处,此示例仅显示了使用 ASp.NET Core 2.2 - WebAapi 的简单文件发布调用

邮递员:

API:

【讨论】:

  • 这正是我在邮递员中所做的。但仍然无法正常工作。我应该在管道中添加一些配置?
  • 请查看代码更改,您必须从请求方法@BrilBroeder 中删除[FromForm]
  • 删除 FromForm 仍然没有成功。它甚至没有命中控制器的构造函数。我想可能是路由问题。所以我改为 GET,移除了身体,它确实击中了控制器/动作。改回 POST,添加了文件,它执行了操作,但其中没有文件。我注意到我忘了在邮递员中设置“钥匙”。设置密钥,它再次没有命中控制器构造函数:-(
  • @BrilBroeder,听起来像XYproblem
  • :-) 不,不是。我只想上传一个文件,然后从那里处理该文件。
【解决方案2】:

找到问题和解决方案。仅供参考,如果其他人遇到同样令人难以置信的问题。

在控制器的'grandmother'类上,有如下属性:

[Consumes("application/json")]

当然不接受表单数据:-)

通过将以下属性添加到操作来覆盖此默认行为

[Consumes("multipart/form-data")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 2017-07-05
    • 2015-08-29
    • 2020-01-17
    • 2013-10-14
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多