【问题标题】:How to handle images from request body如何处理来自请求正文的图像
【发布时间】:2021-03-11 04:17:43
【问题描述】:

我有一个 dotnet API 服务器,我想在请求正文中发送图像,但是当我从邮递员发出请求时,出现错误“不支持的媒体类型”

这是我的 API 控制器,我已将函数的参数从对象更改为字节数组,但它没有帮助,我应该怎么做才能将正文中的文件作为二进制文件发送到处理它

【问题讨论】:

  • 您要发送什么内容类型?
  • @derloopkat 内容类型:图片/jpeg
  • 你应该发送 IFormFile。
  • @tmsbrndz 我是新手,你能详细说明一下吗

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


【解决方案1】:

可能你发送数据有问题,但是可以直接读取请求体内容。

[HttpPost]
[Route("image")]
public async Task<IActionResult> PostImageAsync() {
    using var buffer = new System.IO.MemoryStream();
    await this.Request.Body.CopyToAsync(buffer, this.Request.HttpContext.RequestAborted);
    var imageBytes = buffer.ToArray();
    // process the image
    return NoContent();
}

【讨论】:

    【解决方案2】:

    您可以通过IFormFile获取文件。

    例如:

    [HttpPost]
    public ActionResult PostImage([FromForm] IFormFile image){
      if (image == null || image.Length == 0)
      {
         return BadRequest();
      }
      // Do something with image
    }
    

    【讨论】:

    • 现在我没有关于内容类型的错误,但图像为空
    • @AkezhanOb1 in postman 您的请求正文需要是表单数据。
    • 是的,我知道,我已经改变了,但图像仍然是空的
    • 控制器中的参数名称(图像)和表单数据中的键需要相同。
    猜你喜欢
    • 2015-03-15
    • 2022-11-21
    • 2019-12-01
    • 2010-09-30
    • 1970-01-01
    • 2021-08-07
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多