我可以创建一个只返回图像资源的控制器吗?
我希望在请求URL时,通过控制器传递此逻辑,例如:
www.mywebsite.com/resource/image/topbanner
控制器将查找topbanner.png
并将该图像直接发送回客户端.
我见过这样的例子,您必须创建一个视图-我不想使用视图.我只想用控制器来完成这一切.
这个是可能的吗?
我可以创建一个只返回图像资源的控制器吗?
我希望在请求URL时,通过控制器传递此逻辑,例如:
www.mywebsite.com/resource/image/topbanner
控制器将查找topbanner.png
并将该图像直接发送回客户端.
我见过这样的例子,您必须创建一个视图-我不想使用视图.我只想用控制器来完成这一切.
这个是可能的吗?
使用基本控制器文件方法.
public ActionResult Image(string id)
{
var dir = Server.MapPath("/Images");
var path = Path.Combine(dir, id + ".jpg"); //validate the path for security or use other means to generate the path.
return base.File(path, "image/jpeg");
}
值得注意的是,这似乎相当有效.我做了一个测试,通过控制器(http://localhost/MyController/Image/MyImage
)和直接URL(http://localhost/Images/MyImage.jpg
)请求图像,结果是:
注意:这是一个请求的平均时间.平均值是通过在本地机器上发出数千个请求来计算的,因此总数不应包括网络延迟或带宽问题.