這個範例源自微軟ASP.NET MVC認證考試的教材 -- https://github.com/MicrosoftLearning/20486-DevelopingASPNETMVCWebApplications

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) {
                <img hsrc="@Url.Action("GetImage 動作", "控制器名稱", new { item.PhotoID })" />

                <!-- 最後紅字的地方,轉成HTML原始碼會變成 src="/控制器名稱/GetImage?PhotoID=1"  -->
            }
        
    }

 

ASP.NET MVC 第一天 5.5小時 完整教學影片,免費觀賞

請看  http://mis2000lab.pixnet.net/blog/post/35141956

 

 

完整影片大綱,可以參閱  ASP.NET MVC 線上教學影片、線上教程(第一天 "免費"觀賞,5.5小時)

http://mis2000lab.pixnet.net/blog/post/35172535

 

 

第一天,5.5小時的影片(完整內容),免費讓您評估

不用客氣。

註冊完 https://vimeo.com/ 的會員(免費帳號),就寫信跟我登記吧!

 

請把下圖的資訊,告訴我!

一律透過 E-Mail報名。謝謝您     mis2000lab (at) yahoo.com.tw  或是  school (at) mis2000lab.net

 

Vimeo_05.jpg

 

 

 

 

文章標籤
創作者介紹
創作者 MIS2000 Lab 的頭像
MIS2000 Lab

MIS2000 Lab -- ASP.NET專題實務 / 線上教學文件

MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()