300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > asp.net mvc 从数据库中读取图片的实现代码

asp.net mvc 从数据库中读取图片的实现代码

时间:2023-06-10 21:36:36

相关推荐

asp.net mvc 从数据库中读取图片的实现代码

首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下:

public class ImageResult : ActionResult{public ImageFormat ContentType { get; set; }public Image image { get; set; }public string SourceName { get; set; }public ImageResult(string _SourceName, ImageFormat _ContentType){this.SourceName = _SourceName;this.ContentType = _ContentType;}public ImageResult(Image _ImageBytes, ImageFormat _ContentType){this.ContentType = _ContentType;this.image = _ImageBytes;}public override void ExecuteResult(ControllerContext context){context.HttpContext.Response.Clear();context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);if (ContentType.Equals(ImageFormat.Bmp)) context.HttpContext.Response.ContentType = "image/bmp";if (ContentType.Equals(ImageFormat.Gif)) context.HttpContext.Response.ContentType = "image/gif";if (ContentType.Equals(ImageFormat.Icon)) context.HttpContext.Response.ContentType = "image/vnd.microsoft.icon";if (ContentType.Equals(ImageFormat.Jpeg)) context.HttpContext.Response.ContentType = "image/jpeg";if (ContentType.Equals(ImageFormat.Png)) context.HttpContext.Response.ContentType = "image/png";if (ContentType.Equals(ImageFormat.Tiff)) context.HttpContext.Response.ContentType = "image/tiff";if (ContentType.Equals(ImageFormat.Wmf)) context.HttpContext.Response.ContentType = "image/wmf";if (image != null){image.Save(context.HttpContext.Response.OutputStream, ContentType);}else{context.HttpContext.Response.TransmitFile(SourceName);}}}

然后在 Controller类中创建一个Action.如下:

public ActionResult GetPicture(int id){ICategory server = new CategoryServer();byte[] buffer = server.getCategoryPicture(id);if (buffer != null){MemoryStream stream = new MemoryStream(buffer);System.Drawing.Image image = System.Drawing.Image.FromStream(stream);ImageResult result = new ImageResult(image, System.Drawing.Imaging.ImageFormat.Jpeg);return result;}return View();}

这样就可以显示图片了。

下面几种方法可以显示已经存在的图片

方法一:

using System.IO;public FileResult Image() {string path = Server.MapPath("/Content/Images/Decorative/");string filename = Request.Url.Segments[Request.Url.Segments.Length - 1].ToString();// Uss bine from System.IO instead of StringBuilder.string fullPath = bine(path, filename);return(new FileResult(fullPath, "image/jpeg"));}

方法二:

public ActionResult Image(string id){var dir = Server.MapPath("/Images");var path = bine(dir, id + ".jpg");return base.File(path, "image/jpg");}

方法三:

[AcceptVerbs(HttpVerbs.Get)][OutputCache(CacheProfile = "CustomerImages")]public FileResult Show(int customerId, string imageName){var path = string.Concat(ConfigData.ImagesDirectory, customerId, @"\", imageName);return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg");}

这三种都可以显示已经存在的图片并且我认为第三种方法可以修改为从数据库中读取图片显示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。