徐永春 郭榮熒 徐悅冬
(廣東理工職業(yè)學(xué)院計(jì)算機(jī)系,廣東 廣州 510091)
網(wǎng)站設(shè)計(jì)中存取圖像是操縱數(shù)據(jù)庫(kù)最常用的技術(shù)之一,經(jīng)常出現(xiàn)于學(xué)校網(wǎng)站學(xué)生信息注冊(cè)、商業(yè)娛樂(lè)等網(wǎng)站會(huì)員信息管理系統(tǒng)中注冊(cè)相片的上傳。因此在web網(wǎng)站設(shè)計(jì)過(guò)程中,開(kāi)發(fā)有效的信息系統(tǒng),有必要對(duì)圖像(Image)數(shù)據(jù)存取的方法進(jìn)行理解,包括存儲(chǔ)數(shù)據(jù)速度、空間占用率、安全性、管理的方便性等方面進(jìn)行比較,根據(jù)不同系統(tǒng)的需求特點(diǎn)尋求適合圖像(Image)數(shù)據(jù)存儲(chǔ)的方式。
在Web網(wǎng)站應(yīng)用系統(tǒng)中,不同的數(shù)據(jù)圖像(Image)數(shù)據(jù)存儲(chǔ)方式對(duì)于網(wǎng)站的訪問(wèn)應(yīng)用效果是不一樣的。在以圖像文件內(nèi)容轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)格式存儲(chǔ)在字段中,其優(yōu)點(diǎn)容易進(jìn)行管理,安全性較好;缺點(diǎn)是會(huì)增加數(shù)據(jù)庫(kù)系統(tǒng)的空間,存儲(chǔ)數(shù)據(jù)速度慢;對(duì)于大文件,數(shù)據(jù)庫(kù)容易產(chǎn)生大量數(shù)據(jù)文件碎片。而以圖像文件的信息(文件名,路徑…)存儲(chǔ)在數(shù)據(jù)庫(kù)的表中,則不僅數(shù)據(jù)庫(kù)占用空間資源小,且存儲(chǔ)速度快。在文中,所配置實(shí)驗(yàn)環(huán)境為:XP系統(tǒng),VS2005 C#及sqlserver2000數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,內(nèi)容主要就以文件名+路徑形式保存圖片和顯示圖片實(shí)例進(jìn)行改進(jìn)設(shè)計(jì),并在通過(guò)兩種存儲(chǔ)圖像數(shù)據(jù)試驗(yàn)加入儲(chǔ)存,讀取時(shí)間參數(shù)進(jìn)行訪問(wèn)對(duì)比驗(yàn)證[1]。
在使用SQL Sever2000作為后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng),在學(xué)生庫(kù)Student庫(kù)中建立image1表來(lái)存儲(chǔ)數(shù)據(jù)。表結(jié)構(gòu)如圖1所示。
圖1 image1字段設(shè)計(jì)
在前臺(tái)采用“上傳”圖片文件進(jìn)行編程,主要編程代碼如下:
上面的程序使用了FileUpload控件(upfile)來(lái)上傳圖像,被上傳的圖像是通過(guò)該控件的PostedFile屬性可以在服務(wù)器上使用;PostedFile屬性是Http PostedFile類(lèi)型的一個(gè)對(duì)象,具有 Content Length、contentType、InputStream等非常有用的屬性;前兩個(gè)屬性指出被上傳的文件的長(zhǎng)度和類(lèi)型,Input Stream屬性作為一個(gè)流對(duì)象提供被上傳的文件。
顯示圖片頁(yè)面show.aspx主要代碼如下:
在時(shí)間參數(shù)統(tǒng)計(jì)過(guò)程中,文件上傳時(shí)間與下載所耗時(shí)間與圖像大小有關(guān),上傳與讀取500KB大小圖像時(shí)需要讀取大概3秒左右,上傳與讀取1MB圖像要5秒左右。
以文件名格式存放圖像數(shù)據(jù)的方式中,數(shù)據(jù)表的設(shè)計(jì)如圖2所示。
圖2 image2字段設(shè)計(jì)
在web客戶端頁(yè)面中,其設(shè)計(jì)主要如表1。
表1 web客戶端控件設(shè)計(jì)
②后臺(tái)代碼設(shè)計(jì)時(shí),開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)操作類(lèi)ConnDB(數(shù)據(jù)庫(kù)的打開(kāi)、連接、執(zhí)行SQL語(yǔ)句等常見(jiàn)操作),能使代碼更為簡(jiǎn)潔,使用方便高效。
1)添加記錄主要代碼如下;[4]
2)頁(yè)面顯示圖片主要代碼如下;
文件名+路徑格式存儲(chǔ)圖像方式程序設(shè)計(jì)的實(shí)現(xiàn)方法就是把圖像存儲(chǔ)到某個(gè)文件夾內(nèi),然后按要求顯示。具體實(shí)現(xiàn)步驟是把圖像名、路徑等記錄的附加信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,而真正的圖像文件存儲(chǔ)到某個(gè)文件夾。
時(shí)間統(tǒng)計(jì)過(guò)程中,上傳圖像與二進(jìn)制圖像上傳時(shí)間類(lèi)似,都需要將圖片上傳服務(wù)器,但下載顯示圖片,無(wú)論圖像大小,時(shí)間讀取大約0.5秒即可完成顯示效果,其設(shè)計(jì)方案明顯優(yōu)于第一種方案設(shè)計(jì)。
在web網(wǎng)站圖像網(wǎng)站設(shè)計(jì)中,通過(guò)對(duì)文件名+路徑存儲(chǔ)圖像及二進(jìn)制格式存儲(chǔ)圖像數(shù)據(jù)的存儲(chǔ)及調(diào)用時(shí)間對(duì)比,在以文件名+路徑的格式存儲(chǔ)圖像讀取更為符合網(wǎng)站設(shè)計(jì)簡(jiǎn)潔高效的需要,并能適用于大圖片的網(wǎng)站設(shè)計(jì)需要,以二進(jìn)制圖像存儲(chǔ)圖像數(shù)據(jù)適用于小圖像,基本上是只讀應(yīng)用情況下網(wǎng)站較為適用??傊?,兩種方法的對(duì)比研究對(duì)于網(wǎng)站設(shè)計(jì)具有一定的參考價(jià)值。
[1]于占虎.用VB存取SQL Server2000數(shù)據(jù)庫(kù)中圖片文件的方法.科技信息,2008(32):207-208.
[2]覃焱.ASP.NET實(shí)現(xiàn)在數(shù)據(jù)庫(kù)中二進(jìn)制格式存取圖像.電腦編程技巧與維護(hù),2009(9):47-48.
[3]肖春寶,岳小云.用ASP.NET實(shí)現(xiàn)對(duì)Image數(shù)據(jù)的存取.計(jì)算機(jī)與現(xiàn)代化,2004(7):67-69.
[4]王淑敏.《ASP.NET動(dòng)態(tài)網(wǎng)站設(shè)計(jì)》.北京:清華大學(xué)出版社,2010(7):55-90.