我可以创建一个只返回图像资产的控制器吗?
每当请求如下 URL 时,我想通过控制器路由此逻辑:
www.mywebsite.com/resource/image/topbanner
控制器将查找topbanner.png该图像并将其直接发送回客户端。
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) 请求图像,结果是:
http://localhost/MyController/Image/MyImage
http://localhost/Images/MyImage.jpg
注意:这是请求的平均时间。平均值是通过在本地计算机上发出数千个请求来计算的,因此总数不应包括网络延迟或带宽问题。