有人能够给我一个快速指针,告诉我如何获得一个返回字节数组的OpenRasta处理程序。要在ResourceSpace中公开,而不是JSON或XML对象。即我不希望它被转码,我只是希望能够将媒体类型设置为“图像/ PNG”或类似。
使用ASP.Net MVC我可以通过返回
使用FileContentResult来完成File(myByteArray, "image/PNG");
我只需要知道OpenRasta的等价物。
由于
答案 0 :(得分:10)
您可以只返回一个字节数组作为处理程序的一部分,但最终将作为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标头。
答案 1 :(得分: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));
}
}
答案 2 :(得分:0)
那里有一些Stream编解码器,但你可以像这样简单地完成它
ResourceSpace.Has.ResourcesOfType<byte[]>()
.AtUri("/MyImageUri")
.HandledBy<ImageHandler>();
在这种情况下,Image处理程序返回一个由System.Drawing.Graphics对象生成的字节数组。
任何其他能够更好地阐述这一主题的答案都将受到赞赏。