【问题标题】:Return Image using IHttpActionResult使用 IHttpActionResult 返回图像
【发布时间】:2020-02-27 02:17:38
【问题描述】:

我需要使用 IHttpActionResult 而不是 HttpResponseMessage 从 WebApi 返回图像。如何实现以及需要传递哪些接受和内容类型标头?

谢谢!!

【问题讨论】:

    标签: asp.net-web-api2


    【解决方案1】:

    我实际上是在寻找一种解决方案,通过 web api 发送驻留在互联网上的图像,但我正在使用以下代码从我的 web api 返回本地缩略图;

    [HttpGet]
    [Route("thumbnail/{userId}/{fileName}")]
    public IHttpActionResult GetThumbnail()
    {
            var mediaRoot = System.Web.HttpContext.Current.Server.MapPath("~/media");
    
            var imgPath = Path.Combine(mediaRoot, "images", userId, "thumbnail", fileName);
            var fileInfo = new FileInfo(imgPath);
    
            return !fileInfo.Exists
                ? (IHttpActionResult)NotFound()
                : new FileResult(fileInfo.FullName);
    }
    

    希望对你有帮助

    编辑:您应该创建一个自定义 IHttpActionResult 来重新调整图像,

    似乎我已经创建了一个自定义 IHttpActionResult 来返回图像,这是我从 > Custom IHttpActionResult 获得此代码的帖子

    【讨论】:

      【解决方案2】:

      这是一种基本的方式:

      [HttpGet]
      [Route("test")]
      public IHttpActionResult GetImageTest()
      {
          var stream = File.OpenRead(@"C:\picture.jpg");
      
          var response = new HttpResponseMessage(HttpStatusCode.OK);
          response.Content = new StreamContent(stream);
      
          response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
          response.Content.Headers.ContentLength = stream.Length;
      
          return ResponseMessage(response);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        • 2015-04-19
        • 2018-01-07
        • 2018-08-11
        • 1970-01-01
        • 2017-04-27
        • 2017-06-12
        相关资源
        最近更新 更多