图片的数据库存取
2014-06-22 16:51 P.C ++ 阅读(197) 评论(0) 编辑 收藏 举报SQL Server数据库里图片以二进制格式的image类型存储,存入时先转换成二进制数据,取出时由二进制转换成image/jpg格式才能显示
存入:
视图代码,需要一个上传文件的控件
@using (Html.BeginForm("Index", "NewImg", FormMethod.Post, new { enctype = "multipart/form-data" })) { if (@ViewBag.ImgId != null) { <img src="@Url.Action("ShowImg", "Image", new { id = ViewBag.ImgId })" width="111" height="111" alt="img" /> <br /> <br /> } <input type="file" name="imgUserProfile" id="imgUserProfile" /> <br /> <br /> <input type="submit" value="upload img" /> }
在控制器中,接收到传入的图片文件,以byte类型存入数据库
public ActionResult Index(HttpPostedFileBase imgUserProfile) { try { using (var context = new newpicEntities()) { var imgData = new pict1();// var imgLength = imgUserProfile.ContentLength; var imgByte = new byte[imgLength]; imgUserProfile.InputStream.Read(imgByte, 0, imgLength); imgData.pict = imgByte; context.AddTopict1(imgData); context.SaveChanges(); ViewBag.ImgId = imgData.id; ViewBag.Result = "success"; } } catch (Exception e) { ViewBag.Result = e; } return View("Index"); }
读取并显示数据库中图片:
控制器
public ActionResult ShowImg(int id) { var image = (from m in db.pict1 where m.id == id select m.pict).FirstOrDefault(); var stream = new MemoryStream(image.ToArray()); return new FileStreamResult(stream, "image/jpg"); }
视图
<img src="@Url.Action("ShowImg","Image",new{id= item.id})" height="117px" width="144px" alt=""/>