通过两篇文章解决了数据库存储图片并显示到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. 记录两篇关于linux设置ssh登录 和NAT网络模式下访问

    https://blog.csdn.net/java_dotar_01/article/details/76942563 https://blog.csdn.net/jiuduan2009/artic ...

  2. pycharm 设置字体大写和显示代码行号

    打开pycharm,我们看到左边是没有行号显示的. 在工具栏中点击扳手的标志,打开.       找到 Ide-setting  ——>Editor ——>Apperance ——> ...

  3. master分支合并

    一.Sourcetree简单介绍 通过Git可以进行对项目的版本管理,但是如果直接使用Git的软件会比较麻烦,因为是通过一条一条命令进行操作的.  Sourcetree则可以与Git结合,提供图形界面 ...

  4. android application project 开发准备工作

    1.下载对应的JDK.SDK http://www.androiddevtools.cn/ 2.创建安卓app应用模拟器Run时会出现如图情况 解决办法是: 启动 Android SDK Manage ...

  5. vue使用element案列

    第一步:使用vue创建项目‘ 第二步:在项目添加element cmd:vue add element demo:https://github.com/weibanggang/vuemode.git

  6. HDU 2018母牛的故事(类似斐波那契,找规律)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2018 母牛的故事 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. C#制作ActiveX浏览器插件.net

    开发环境:VS2008 第一步 创建项目 新建一个项目,选择“Windows窗体控件库”,创建一个用户控件项目“ActiveXDemo”(注意,这里起名不能用中文,否则后面会出问题),里面有个用户控件 ...

  8. C#通过拼接协议的方式来发送邮件类库

    using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; using Syste ...

  9. wordpress上传含中文文件名出现乱码

    一.首先到FTP里面找到wp-admin/includes/file.php这个文件. 二.查找wp_handle_upload在文件里面找到以下代码. function wp_handle_uplo ...

  10. EF Core 2.1 中的 Eager loading、Explicit loading和LazyLoading (转自MSDN)

    Entity Framework Core allows you to use the navigation properties in your model to load related enti ...