【问题标题】:Get Image as stream or byte array using OpenRasta使用 OpenRasta 将图像作为流或字节数组获取
【发布时间】:2009-12-23 11:38:15
【问题描述】:

谁能给我一个快速指针,告诉我如何获得一个返回字节数组的 OpenRasta 处理程序。在 ResourceSpace 中公开,而不是 JSON 或 XML 对象。即我不希望它转码,我只想能够将媒体类型设置为“image/PNG”或类似的。

使用 ASP.Net MVC 我可以通过返回使用 FileContentResult 来做到这一点

File(myByteArray, "image/PNG");

我只需要知道 OpenRasta 等价物。

谢谢

【问题讨论】:

    标签: rest openrasta


    【解决方案1】:

    您可以只返回一个字节数组作为处理程序的一部分,但最终将作为 application/octet-stream 提供。

    如果你想返回文件,你可以简单地返回一个 IFile 的实现。

    public class MyFileHandler {
      public IFile Get(int id) {
        var mybytes = new byte[];
        return new InMemoryFile(new MemoryStream(mybytes)) {
          ContentType = new MediaType("image/png");
        }
      }
    }
    

    您还可以设置 FileName 属性以返回一个特定的文件名,这将为您呈现一个 Content-Disposition 标头。

    【讨论】:

      【解决方案2】:

      我在 OpenRasta 邮件列表中查找了这个,并且有几个相关的帖子: http://groups.google.com/group/openrasta/browse_thread/thread/5ae2a6d653a7421e# http://groups.google.com/group/openrasta/browse_thread/thread/a631d3629b25b88a#

      我已经使用以下示例进行了测试:

      配置:

      ResourceSpace.Has.ResourcesOfType<IFile>()
         .AtUri("/customer/{id}/avatar")
         .HandledBy<CustomerAvatarHandler>();
      

      处理程序:

      public class CustomerAvatarHandler
      {
          public object Get(int id)
          {
              const string filename = @"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg";
              return new InMemoryFile(File.OpenRead(filename));
          }
      }
      

      【讨论】:

      • 这不能回答你关于 byte[] 的具体问题,但我相信你可以通过 MemoryStream 或其他方式将字节数组转换为流。
      【解决方案3】:

      好吧,那里有一些 Stream 编解码器,但您可以像这样简单地做到这一点

      ResourceSpace.Has.ResourcesOfType<byte[]>()
                      .AtUri("/MyImageUri")
                      .HandledBy<ImageHandler>();
      

      在我的例子中,图像处理程序返回一个由 System.Drawing.Graphics 对象组成的字节数组。

      我们将不胜感激任何其他更能阐明这个主题的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-14
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2010-09-23
        • 1970-01-01
        相关资源
        最近更新 更多