小编典典

ASP.NET MVC 控制器可以返回图像吗?

all

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

每当请求如下 URL 时,我想通过控制器路由此逻辑:

www.mywebsite.com/resource/image/topbanner

控制器将查找topbanner.png该图像并将其直接发送回客户端。

我见过这样的例子,你必须创建一个视图——我不想使用视图。我想只用控制器来完成这一切。

这可能吗?


阅读 90

收藏
2022-03-14

共1个答案

小编典典

使用基本控制器文件方法。

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) 请求图像,结果是:

  • MVC: 每张照片 7.6 毫秒
  • 直接: 每张照片 6.7 毫秒

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

2022-03-14