SQL Server數據庫裏圖片以二進制格式的image類型存儲,存入時先轉換成二進制數據,取出時由二進制轉換成image/jpg格式才能顯示數據庫
存入:spa
視圖代碼,須要一個上傳文件的控件code
@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類型存入數據庫orm
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"); }
讀取並顯示數據庫中圖片:blog
控制器圖片
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"); }
視圖ip
<img src="@Url.Action("ShowImg","Image",new{id= item.id})" height="117px" width="144px" alt=""/>