基于SQL Server的Asp.net圖片存儲(chǔ)技術(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
互聯(lián)網(wǎng)時(shí)代的到來(lái),使得各種各樣的基于互聯(lián)網(wǎng)的應(yīng)用系統(tǒng)層出不窮,其中絕大部分應(yīng)用系統(tǒng)都會(huì)用到圖片數(shù)據(jù),需要將圖片在用戶界面顯示出來(lái)。這里介紹一種實(shí)現(xiàn)方法,把圖片存儲(chǔ)到某個(gè)文件夾內(nèi).然后按要求顯示。具體實(shí)現(xiàn)步驟是把圖片路徑等記錄的附加信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,而真正的圖片文件存儲(chǔ)到某個(gè)文件夾。該方法是一種很好的解決方案。
2 圖片的處理方式
對(duì)于圖片的處理有兩種方式:①圖片數(shù)據(jù)以文件形式直接存儲(chǔ)在硬盤,在數(shù)據(jù)庫(kù)中保存該圖片的記錄附加信息(路徑,文件名,注釋…);②圖片直接存儲(chǔ)在數(shù)據(jù)庫(kù)中。這兩種方式各有利弊。圖片文件存入數(shù)據(jù)庫(kù)中便于管理與維護(hù),而存入硬盤可能會(huì)因?yàn)椴恍⌒膭h除圖片文件,而使得數(shù)據(jù)不一致:但圖片放在數(shù)據(jù)庫(kù)中不便于修改編輯,同時(shí)會(huì)引起數(shù)據(jù)庫(kù)讀取數(shù)據(jù)時(shí)的I/O消耗,而放在硬盤上則不會(huì)引起這個(gè)問題。所以對(duì)于小文件,建議放在數(shù)據(jù)庫(kù)中便于管理,而對(duì)于大文件,且不可放在數(shù)據(jù)庫(kù)中,否則數(shù)據(jù)庫(kù)表會(huì)大量產(chǎn)生數(shù)據(jù)文件的碎片。
3 圖片存儲(chǔ)方法
該系統(tǒng)使用ASP.NET和SQL Server數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖片的存儲(chǔ)。將圖片存放到硬盤指定的目錄下,將圖片的相對(duì)存儲(chǔ)路徑和其他附屬信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。開發(fā)平臺(tái)使用的語(yǔ)言為VB,數(shù)據(jù)庫(kù)訪問技術(shù)為AD0.NET擻據(jù)訪問機(jī)制采用的是AD0.NET里的OleDb機(jī)制。
3.1 數(shù)據(jù)庫(kù)表的建立
對(duì)于整個(gè)圖片管理系統(tǒng)中的圖片存儲(chǔ),需建立圖片內(nèi)容表(myimg),其結(jié)構(gòu)如表1所示。
3.2 后臺(tái)數(shù)據(jù)庫(kù)的配置
圖片管理系統(tǒng)使用SQL Server 2000數(shù)據(jù)庫(kù)。代碼如下:
3.3 添加圖片頁(yè)面
進(jìn)入頁(yè)面即可添加圖片,存儲(chǔ)圖片路徑到數(shù)據(jù)庫(kù)。
3.3.1 頁(yè)面示例
添加圖片頁(yè)面如圖1所示。
3.3.2 圖片的上傳方法
單擊如圖1所示的“瀏覽”按鈕,就會(huì)彈出windows操作系統(tǒng)的“選擇文件”對(duì)話框,選擇好合適的圖片以后,單擊“打開”即可,如圖2所示。
然后單擊“上傳文件”按鈕,如果上傳成功,就會(huì)給出如圖3所示的提示信息,以及該圖片的相對(duì)路徑。
將上傳圖片的相對(duì)路徑復(fù)制到“圖片路徑”文本框中.并且輸入圖片標(biāo)題、圖片說(shuō)明,選擇圖片所屬的欄目,最后單擊“提交”按鈕,如圖4所示。
如果信息成功寫入數(shù)據(jù)庫(kù),就會(huì)給出添加圖片成功提示信息。
3.4 頁(yè)面用到的數(shù)據(jù)庫(kù)信息
添加新圖片頁(yè)面使用了數(shù)據(jù)庫(kù)中的myimg表,將用戶輸入圖片的合法信息寫到表中,包含myimg表的所有字段。
4 結(jié)語(yǔ)
一個(gè)好的解決方案能夠使系統(tǒng)具有更大的適用性。如果將圖片直接存儲(chǔ)到數(shù)據(jù)庫(kù)中,由于圖片數(shù)據(jù)不斷增加.?dāng)?shù)據(jù)庫(kù)就會(huì)不斷變大,而將圖片數(shù)據(jù)以文件形式直接存儲(chǔ)到硬盤.在數(shù)據(jù)庫(kù)中保存該圖片的記錄附加信息(路徑,文件名,注釋…),就會(huì)使數(shù)據(jù)庫(kù)存儲(chǔ)的信息相對(duì)減少,從而提高數(shù)據(jù)庫(kù)的訪問性能。