ASP.NET MVC控制器能否返回映像?

我可以创建一个只返回图像资源的控制器吗

我希望在请求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毫秒

注意:这是请求的平均时间。平均值是通过在本地计算机上发出数千个请求来计算的,因此总数不应包括网络延迟或带宽问题

发表评论