发布于 2016-06-04 03:28:35 | 146 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ASP.NET

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。


今天搞了一天的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 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"); 
} 

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

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务