FileUpload檔案上傳時,如果要把圖片(二進位內容)存入資料表
資料表的欄位「資料型態」請設定為 Image (舊版本在用的)或 VarBinary(MAX)
(1) 轉成類別檔以後,會變成
public byte[] PhotoFile { get; set; }
(2) 上傳以後,存入(寫入、新增)資料表的寫法:
[HttpPost]
public ActionResult Create(Photo photo, HttpPostedFileBase image)
{ // ****************************
if (ModelState.IsValid)
{ //*** 檔案上傳 ****************************************(start)
if (image != null) {
photo.PhotoFile = new byte[image.ContentLength];
image.InputStream.Read(photo.PhotoFile, 0, image.ContentLength);
}
//*** 檔案上傳 ****************************************(end)
_db.Photos.Add(photo); // 新增一筆記錄
_db.SaveChanges(); // 正式寫入資料庫!
return RedirectToAction("Index");
}
return View(photo);
}
(3) 從資料表裡面「讀取」這些二進位的檔案,並還原成圖片
public ActionResult Index()
{
return View("Index", _db.Photos.ToList());
}
//*** 把資料表裡面的「二進位」內容,還原成圖片檔 ****************************
public FileContentResult GetImage(int PhotoID)
{
Photo requestedPhoto = _db.Photos.FirstOrDefault(p => p.PhotoID == PhotoID);
if (requestedPhoto != null) {
return File(requestedPhoto.PhotoFile, "image/jpeg");
}
else {
return null;
}
}
(4) 容易犯錯的地方在於「檢視畫面(View)」,
我們採用 List範本,列出所有照片
@foreach (var item in Model) {
@if (item.PhotoFile != null) {
@
Url.Action("GetImage 動作", "控制器名稱", new { item.PhotoID })" />
}
}
ASP.NET MVC 第一天 5.5小時 完整教學影片,免費觀賞
請看 http://mis2000lab.pixnet.net/blog/post/35141956
第一天,5.5小時的影片(完整內容),免費讓您評估
不用客氣。
註冊完 https://vimeo.com/ 的會員(免費帳號),就寫信跟我登記吧!
請把下圖的資訊,告訴我!
一律透過 E-Mail報名。謝謝您 mis2000lab (at) yahoo.com.tw 或是 school (at) mis2000lab.net
沒有留言:
張貼留言