通过两篇文章解决了数据库存储图片并显示到View的方法:

http://blog.sina.com.cn/s/blog_6da396a50101639u.html
http://www.cnblogs.com/artech/archive/2012/08/14/action-result-02.html

其中,第一篇虽然有些混乱,但是对我有很大启发,而的第二篇写的就很笼统却比较了然,大体看一下就解决了令我不解的显示方法。

1.当然第一步是Img,我们在View里,给Img的文件来源,加上Action调用:

  <img src=@Url.Action("GetImg", new { id = iii.DrId }) />

iii就是我们的对象实例了,这里,我们调用的是当前Controller的GetImg。

2.所以我们之后需要一个Action:

/// <summary>
/// Action:获取图片文件
/// </summary>
public FileContentResult GetImg(int id)
{
var anModel = zService.Find(id);
if (anModel != null)
{
return File(anModel.DrImg, "image/jpg", anModel.DrId.ToString() + anModel.DrName);
}
else
{
return null;
}
}

这里的方法就是拷贝的我最开始提供的文章里的,并未有太多修改,注意一下“File”方法,有三个参数:

FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName)

第一个当然就是读取出来的文件数据了,第二个是要以什么类型展示文件(MimeType),第三个就是要展示到页面的文件,是什么文件名
这里要注意的是,参数3,如果这样自定义的名字,生成的结果好像是:『Id+Name+"~序号"』比如:361我是超人~3.jpg


3.至于怎么存进数据库,其实在链接文章1里有讲解,我用的是MVC和EF,代码就会类似于这样:

3.1前台,View里加Form,注意“enctype”属性,看网上的几个文章,都说要加这个。

@using (Html.BeginForm("Add", "DoctorAdmin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
<legend>DoctorInfo</legend> <div class="editor-label">
<span>图片</span>
</div>
<div>
<input type="file" name="imgs" />
</div> <div class="editor-label">
@Html.LabelFor(model => model.DrName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DrName)
</div> <p>
<input type="submit" value="确定" />
</p>
</fieldset>
}

3.2后台,Action和一个获取图片方法。

        [HttpPost]
public ActionResult Add(WXG_Doctor pModel)
{
if (pModel == null)
{
return HttpNotFound();
} //获取上传图片
HttpPostedFileBase file1 = Request.Files[];
int error1;
pModel.DrImg = FileUpDown.GetImageByte(out error1, file1, * ); zService.Create(pModel);
return RedirectToAction("Add");
} /// <summary>
/// 获取图片内容
/// </summary>
///<param name="pError">0:正常完成 1:文件大小异常。2:扩展名不支持。</param>
/// <param name="pUpImage">要上传的文件</param>
/// <param name="pFileLength">文件要小于这个大小</param>
/// <returns>图片文件的内容</returns>
public static byte[] GetImageByte(out int pError, HttpPostedFileBase pUpImage, int pFileLength)
{
if (pUpImage.FileName != null)
{
//要上传的文件大小判断
int sFileLength = pUpImage.ContentLength;
if (sFileLength < || sFileLength > pFileLength)
{
pError = ;
return null;
} //获取文件名
string sFilename = System.IO.Path.GetFileName(pUpImage.FileName).ToLower();
//获取upImage文件的扩展名
string extendName = System.IO.Path.GetExtension(sFilename);
//判断是否为图片格式
if (extendName != ".jpg" && extendName != ".jpeg" && extendName != ".gif" && extendName != ".bmp" && extendName != ".png")
{
pError = ;
return null;
} byte[] myData = new Byte[sFileLength];
pUpImage.InputStream.Read(myData, , sFileLength);
pError = ;
return myData;
}
else
{
pError = ;
return null;
}
}
}

其中,返回的状态那个参数,我不知会不会写的很2,而且具体的逻辑也缺乏健壮,请大家不要直接拿来就用了,酌情修改下。

MVC保存二进制到数据库,并显示文件的方法(图片显示)的更多相关文章

  1. activiti 流程部署 保存流程图到数据库 保存二进制图片 存储失败

    activiti 流程部署 保存流程图到数据库  保存二进制图片 存储失败 具体错误如下 具体 junit测试 结果 :提示如下: 解决方法: 数据库版本不同 无法保存二进制文件到数据库表中!5.5. ...

  2. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  3. ASP.NET MVC 4 - 上传图片到数据库

    这里演示如何在MVC WEB应用程序如何上传图片到数据库以及如何在WEB页面上显示图片.数据库表对应整个Model类,不单图片数据一个字段,我们从数据表的定义开始: CREATE TABLE [dbo ...

  4. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

  5. asp.net将图片转成二进制存入数据库

    一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...

  6. 配置NHibernate将枚举保存为Oracle数据库中的字符串

    假设有这样一个枚举: /// <summary> /// 字典项类型 /// </summary> public enum DicItemType { [EnumDescrip ...

  7. ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上传目录的尺寸限制

    我曾经试过使用JSAjaxFileUploader插件来把文件.照片以异步的方式上传,就像"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01- ...

  8. C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”

    下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...

  9. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    //浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...

随机推荐

  1. 解决Unity3D操作界面字体模糊的问题

    新装的电脑安装了UNITY后,操作界面的字体异常模糊,搜了半天看看有没有换字体的功能,也没找到 后来快放弃的时候,偶然看到这篇文章http://eyehere.net/2014/unity3d-int ...

  2. 如何玩转Android远控(androrat)

    关于WebView中接口隐患与手机挂马利用的引深 看我是怎样改造Android远程控制工具AndroRat 1.修改布局界面 2.配置默认远程ip和端口 3.LauncherActivity修改为运行 ...

  3. 035server端并发聊天

    import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): # 里面是每个客户端连接执 ...

  4. 关于webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示

    今天用webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示 解决办法:运行 sudo chown ...

  5. 二十八、详述 IntelliJ IDEA 远程调试 Tomcat 的方法

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...

  6. 【nlogn LIS】 模板

    总结:stl真好用 #include <cstdio> #include <cstring> #include <iostream> #include <al ...

  7. CSS3与页面布局学习总结(四)——页面布局的多种方法

    一.负边距与浮动布局   1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的 ...

  8. ASP.NET WebApi 中使用swagger 构建在线帮助文档

    1 在Visual Studio 中创建一个Asp.NET  WebApi 项目,项目名:Com.App.SysApi(本例创建的是 .net 4.5 框架程序) 2  打开Nuget 包管理软件,查 ...

  9. 屏蔽JS代码错误

    用来屏蔽IE的错误的JS代码,也能屏蔽弹出框错误! <SCRIPT language=JavaScript> function killErrors() { return true; } ...

  10. 解决ssh连接linux系统特别慢的问题

    新安装的centos系统,发现ssh连接很慢,因为是测试环境,对安全的要求不高,所以完全可以更快的连接,下面一起来解决这个问题. 一.分析主要原因: 1.SSH的反向DNS解析会消耗大量时间 2.GS ...