• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

asp 搞代码 4年前 (2022-01-03) 25次浏览 已收录 0个评论

今天搞了一天的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/Ima来源gao*daima.com搞@代#码网ges/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-600”);
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”);
}

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

以上就是asp.net mvc 从数据库中读取图片的实现代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:asp.net mvc 从数据库中读取图片的实现代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址