画像のデータベースアクセス
6541 ワード
SQL Serverデータベースの画像はバイナリ形式のイメージタイプで保存し、預け入れ時はバイナリデータに変換し、取り出す時はバイナリからイメージ/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=""/>