ASP.NET MVC實現(xiàn)圖片上傳、圖片預(yù)覽顯示
先看看效果(下面gif動畫制作有點大,5.71MB):

題外話:上面選擇圖片來源于Insus.NET的新浪微博,言歸正傳,由于以前的asp.net mvc的練習(xí)文件上傳文件,顯示或是下載等博文,均是存儲于站點目錄之中。這次練習(xí)是把圖片存儲于數(shù)據(jù)庫,也就是以圖片的數(shù)據(jù)流存儲,在上傳時我們需要把文件處理為數(shù)據(jù)庫,顯示時,我們需要把數(shù)據(jù)流處理為文件。
一看上面的演示,我們還會看到一個預(yù)覽區(qū)。選擇圖片時,預(yù)覽區(qū)會預(yù)先顯示選擇圖片。確認(rèn)正確之后,我們再上傳至數(shù)據(jù)庫中。
使用下面SQL語句創(chuàng)建表[dbo].[ImageStore],存儲過程2個[dbo].[usp_ImageStore_Insert]和[dbo].[usp_ImageStore_GetAll]:

根據(jù)數(shù)據(jù)表,我們需要在asp.net mvc的models目錄中創(chuàng)建一個mode,習(xí)慣性是以數(shù)據(jù)表來創(chuàng)建:

由于我們還要處理程序與數(shù)據(jù)庫之間的交流,創(chuàng)建一個Entity,兩個方法,一是獲取所有數(shù)據(jù),另一個是為添加數(shù)據(jù)所準(zhǔn)備:

上面的Entity中,有兩個標(biāo)記。
標(biāo)記2,Insus.NET有寫成一個Utility,也就是說把DataTable轉(zhuǎn)換為List<T>的工具,其實有以前的asp.net mvc也有提及或是代碼分享,在此你不必再費時費心去搜索,參考下面代碼就是了:

在上面的代碼示例中,#35行的方法,是DataTable轉(zhuǎn)換為json序列化,由于本例中并無使用到,即在此略過。
接下來,打開控制器創(chuàng)建兩Action,第一個控制是視圖操作,我們有把數(shù)據(jù)傳入視圖中。而第二個操作,是為處理上傳文件方法所服務(wù)。

控制器兩個Action代碼:
下是完成View視圖,在視圖中我們先定義表格樣式:

準(zhǔn)備即時預(yù)覽圖片的js代碼:

顯示數(shù)據(jù)與動態(tài)產(chǎn)生Table:

上面代碼示例中,#119與#120代碼,是顯示圖片,有關(guān)base64圖片,可以參考獨立演示:
演示ASP.NET MVC應(yīng)用程序,顯示Base64圖片。
在控制器中,Insus.NET有創(chuàng)建兩個Action,一個是為視圖準(zhǔn)備,另一個是把文件轉(zhuǎn)換為FileStream,然后再用 Convert.ToBase64String() 來轉(zhuǎn)換。

在下面的視圖中,添加一個div markup來load圖片。語法:'<img src="data:image/png;base64,' + data.Base64Imgage + '" />':

實時演示:

當(dāng)然,完全正確應(yīng)該是如下:

#122是動態(tài)指定圖片原來的mine type。語法就是簡潔與方便。
asp.net mvc圖片上傳與顯示,整個實現(xiàn)過程,并沒有怎樣的復(fù)雜,一個一個小功能來實現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
.NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟
本文主要介紹了.NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
ASP.NET GridView控件在列上格式化時間及DataFormatString使用
在GridView綁定日期格式的時候,數(shù)據(jù)庫中的日期為2008-07-04,而GridView顯示的是2007-07-04 000000,多了后面一截很不美觀,想把它去掉不知道有什么好的方法,感興趣的朋友可以了解本文,或許對你有所幫助2013-01-01
ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(二)
這篇文章主要介紹了使用ASP.NET.4.5.1+MVC5.0構(gòu)建項目中設(shè)置系統(tǒng)角色的全部過程,十分的詳細,附上全部源碼,推薦給想學(xué)習(xí).net+mvc的小伙伴們2015-01-01
.net 讀取非標(biāo)準(zhǔn)配置文件的小例子
這篇文章介紹了.net 讀取非標(biāo)準(zhǔn)配置文件的小例子,有需要的朋友可以參考一下2013-07-07
.NET獲取枚舉DescriptionAttribute描述信息性能改進的多種方法
這篇文章主要介紹了.NET獲取枚舉DescriptionAttribute描述信息性能改進的多種方法 的相關(guān)資料,需要的朋友可以參考下2016-01-01
利用sender的Parent獲取GridView中的當(dāng)前行(獲取gridview的值)
這篇文章主要介紹了利用sender的Parent獲取GridView中的當(dāng)前行的方法,大家參考使用吧2014-01-01

