1. 程式人生 > >ASP.NET MVC圖片管理(上傳,預覽與顯示) 資料流儲存資料庫方式

ASP.NET MVC圖片管理(上傳,預覽與顯示) 資料流儲存資料庫方式

先看看效果(下面gif動畫製作有點大,5.71MB):

題外話:上面選擇圖片來源於Insus.NET的新浪微博:http://weibo.com/104325017 也是昨晚(2015-07-03)Insus.NET烹飪的晚餐。如果你也想學習烹飪,也可以關注Insus.NET的微博。

言歸正傳,由於以前的asp.net mvc的練習檔案上傳檔案,顯示或是下載等博文,均是儲存於站點目錄之中。這次練習是把圖片儲存於資料庫。也就是以圖片的資料流儲存。在上傳時我們需要把檔案處理為資料庫,顯示時,我們需要把資料流處理為檔案。

一看上面的演示,我們還會看到一個預覽區。選擇圖片時,預覽區會預先顯示選擇圖片。確認正確之後,我們再上傳至資料庫中。

使用下面SQL語句建立表[dbo].[ImageStore],儲存過程2個[dbo].[usp_ImageStore_Insert]和[dbo].[usp_ImageStore_GetAll]:

 View Code

根據資料表,我們需要在asp.net mvc的models目錄中建立一個mode,習慣性是以資料表來建立:



由於我們還要處理程式與資料庫之間的交流,建立一個Entity,兩個方法,一是獲取所有資料,另一個是為新增資料所準備:


上面的Entity中,有兩個標記,標記一可以參考這篇:http://www.cnblogs.com/insus/p/4156735.html 。
標記2,Insus.NET有寫成一個Utility,也就是說把DataTable轉換為List<T>的工具,其實有以前的asp.net mvc也有提及或是程式碼分享,在此你不必再費時費心去搜索,參考下面程式碼就是了:


在上面的程式碼示例中,#35行的方法,是DataTable轉換為json序列化,由於本例中並無使用到,即在此略過。

code source:

 View Code


接下來,開啟控制器建立兩Action,第一個控制是檢視操作,我們有把資料傳入檢視中。而第二個操作,是為處理上傳檔案方法所服務。


控制器兩個Action程式碼:

 View Code


下是完成View檢視,在檢視中我們先定義表格樣式:

 View Code


準備即時預覽圖片的js程式碼:



其實這是從另外一篇稍作修改而來,更多參考:http://www.cnblogs.com/insus/p/4301179.html 現成的,呵呵,那都是持續努力學習的結果。

顯示資料與動態產生Table:




上面程式碼示例中,#119與#120程式碼,是顯示圖片,有關base64圖片,可以參考獨立演示:http://www.cnblogs.com/insus/p/3621199.html
當然,完全正確應該是如下:



#122是動態指定圖片原來的mine type。Razor語法就是簡潔與方便。

asp.net mvc圖片上傳與顯示,整個實現過程,並沒有怎樣的複雜。一個一個小功能來實現。

Insus.NET這大半年以來,均是以學習asp.net mvc為主,但asp.net也有涉及,但是相對較少了。一旦覺得技術成熟,馬上使用asp.net mvc來實現專案。與大家一起努力......