我可以创建一个只返回图像资源的控制器吗
我希望在请求URL(如以下内容)时,通过控制器路由此逻辑:
www.mywebsite.com/resource/image/topbanner
控制器将查找topbanner.png
,并将该图像直接发送回客户端
我见过这样的例子,你必须创建一个视图——我不想使用视图。我只想用控制器来完成这一切
这可能吗
使用基本控制器文件方法
公共操作结果图像(字符串id)
{
var dir=Server.MapPath(“/Images”);
var path=path.Combine(dir,id+“.jpg”);//验证路径的安全性或使用其他方法生成路径。
返回base.File(路径“image/jpeg”);
}
值得注意的是,这似乎相当有效。我做了一个测试,通过控制器请求图像(http://localhost/MyController/Image/MyImage
)并通过直接URL(http://localhost/Images/MyImage.jpg
),结果是:
- MVC:每张照片7.6毫秒
- 直接:每张照片6.7毫秒
注意:这是请求的平均时间。平均值是通过在本地计算机上发出数千个请求来计算的,因此总数不应包括网络延迟或带宽问题