圖片的數據庫存取

  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=""/>
相關文章
相關標籤/搜索