在客户端展示本地图片

阅读: 评论:0

在客户端展示本地图片

在客户端展示本地图片

当用户在客户端上请求本地图片的时候,我们需要把本地的图片展示。

1.在控制器端把图片转换成流的形式

2.前台请求控制器端的方法,输出图片

控制器端:

 public class ImageController : Controller {private static readonly string PATH = @"C:UsersxiechongxiDesktop";//这个key就是图片的名字和后缀名public ActionResult GetImage(string key) {//path就包含了路径和文件名,后缀string path = Path.Combine(PATH, key);//ext是用GetExtension方法获取路径的后缀名string ext = System.IO.Path.GetExtension(path);//判断这个路径是否有图片if (System.IO.File.Exists(path)) {//通过http返回一个image类型的文件using (FileStream fs = System.IO.File.OpenRead(path)) {return File(StreamToBytes(fs), "image/" + ext);}}else {return null;}}private byte[] StreamToBytes(Stream stream) {byte[] bytes = new byte[stream.Length];stream.Read(bytes, 0, bytes.Length);// 设置当前流的位置为流的开始stream.Seek(0, SeekOrigin.Begin);return bytes;}}
Cotroller

前台获取:

//image表示的是ImageCotroller,@scene.LocalKey表示的是文件名,包含后缀名
<img src="/image/@scene.LocalKey"/>
Html

是不是感觉Html里面很奇怪,<img src="/image/40ed9c2c-1d1c-470c-a760-7f860e9c309c.jpg">这种形式

实际上为了美观更改了路由,可以参考一下以下路由设置

public static void RegisterRoutes(RouteCollection routes) {routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Image",//路由名称"Image/{key}",new { controller = "Image", action = "GetImage" });routes.MapRoute("Default", // 路由名称"{controller}/{action}/{id}", // 带有参数的 URLnew { controller = "Follow", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );}
路由设置

新添加的路由一定要放在默认路由上面,这里有个优先级,我也就不多说。

 

流程是这样的img标签里面的src后面这个地址,是请求ImageCotroller中的GetImage方法(路由设置效果),并且传递参数(文件名和后缀),然后GetImage返回的是文件。

 

 


注:此篇随笔只供参考使用,而且也有很多小瑕疵,最主要的不是代码,逻辑才是最重要的。

转载于:.html

本文发布于:2024-01-30 01:26:29,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170654919318257.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客户端   图片
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23