服务器之家

服务器之家 > 正文

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

时间:2019-09-03 14:31     来源/作者:服务器之家
首先是创建一个类,继承于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 Path.Combine from System.IO instead of StringBuilder. 
string fullPath = Path.Combine(path, filename); 
return(new FileResult(fullPath, "image/jpeg")); 

方法二: 
复制代码代码如下:

public ActionResult Image(string id) 

var dir = Server.MapPath("/Images"); 
var path = Path.Combine(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"); 

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

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
叠猫猫队长可以退出吗 叠猫猫队长怎么换队伍
叠猫猫队长可以退出吗 叠猫猫队长怎么换队伍 2019-06-05
逃跑吧少年怎么卡皮肤 逃跑吧少年卡永久皮肤技巧
逃跑吧少年怎么卡皮肤 逃跑吧少年卡永久皮肤技巧 2019-06-21
返回顶部