asp將圖片保存到access數(shù)據(jù)庫(kù)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
[p]一般我們上傳圖片都保存在文件目錄下,但有時(shí)因?yàn)樘厥庖笮枰獙D片保存在數(shù)據(jù)庫(kù),接下來(lái)我講一下如何用asp實(shí)現(xiàn)將圖片保存到access數(shù)據(jù)庫(kù)的方法,具體如下:[/p]
[p]第一步、要制做一個(gè)access數(shù)據(jù)庫(kù),我們給它起名字叫images.mdb,該數(shù)據(jù)庫(kù)里有兩個(gè)字段:id、img,id字段的類(lèi)型設(shè)為自動(dòng)編號(hào),img字段的類(lèi)型設(shè)為ole對(duì)象。 [/p] [p] [/p] [p]第二步、設(shè)計(jì)一個(gè)上傳的表單,根據(jù)要求可簡(jiǎn)可繁。 [/p] [p] [/p] [p]第三步、設(shè)計(jì)后臺(tái)的圖片處理程序,可分為圖片上傳保存程序和圖片讀取程序。 [/p] [p] [/p] [p]第四步、圖片顯示。 [/p] [p] [/p] [p]下面給出程序并分別做介紹。 [/p] [p] [/p] [p]一、 表單程序updata.html [/p] [p] [/p] [p]它的功能是為上傳提供一個(gè)界面,表單的enctype屬性為multipart/form-data,它是設(shè)置表單的mime編碼的,只有使用了它才能完整地傳送文件的數(shù)據(jù)。 [/p] [p] [/p] [p][/p] [p][/p] [p] [p][/p] [p] [p][/p] [p] [/p] [p]二、 圖片的上傳與保存程序process.asp [/p] [p] [/p] [p]<%[/p] [p]response.buffer=true[/p] [p]formsize=request.totalbytes[/p] [p]formdata=request.binaryread(formsize)[/p] [p]bncrlf=chrb(13) & chrb(10)[/p] [p]divider=leftb(formdata,clng(instrb(formdata,bncrlf))-1)[/p] [p]datastart=instrb(formdata,bncrlf & bncrlf)+4[/p] [p]dataend=instrb(datastart+1,formdata,divider)-datastart[/p] [p]mydata=midb(formdata,datastart,dataend)[/p] [p]set conngraph=server.createobject("adodb.connection")[/p] [p]conngraph.open "provider=microsoft.jet.oledb.4.0;[br]data source=" & server.mappath("images.mdb")[/p] [p]set rec=server.createobject("adodb.recordset")[/p] [p]rec.open "select * from images where id is null",conngraph,1,3[/p] [p]rec.addnew[/p] [p]rec("img").appendchunk mydata[/p] [p]rec.update[/p] [p]rec.closes[/p] [p]set rec=nothing[/p] [p]set conngraph=nothing %> [/p] [p]這段程序的功能是將上傳圖片的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)里。下面分句說(shuō)明各語(yǔ)句的作用。 [/p] [p] [/p] [p]response.buffer=true[/p] [p]formsize=request.totalbytes[/p] [p]formdata=request.binaryread(formsize) [/p] [p]打開(kāi)緩存功能,獲取客戶端總的發(fā)送數(shù)據(jù)量,獲取上傳過(guò)來(lái)的數(shù)據(jù)。 [/p] [p] [/p] [p]bncrlf=chrb(13) & chrb(10)[/p] [p]divider=leftb(formdata,clng(instrb(formdata,bncrlf))-1) [/p] [p]這兩個(gè)語(yǔ)句的意思是設(shè)一個(gè)二進(jìn)制回車(chē)符及得到一個(gè)divider分隔符,目的是為了確定圖片的位置。 [/p] [p] [/p] [p]datastart=instrb(formdata,bncrlf & bncrlf)+4[/p] [p]dataend=instrb(datastart+1,formdata,divider)-datastart[/p] [p]mydata=midb(formdata,datastart,dataend) [/p] [p]以上三個(gè)語(yǔ)句是確定圖片數(shù)據(jù)的起始位置、結(jié)束位置及實(shí)際圖片的數(shù)據(jù)。 [/p] [p] [/p] [p]set conngraph=server.createobject("adodb.connection")[/p] [p]conngraph.open "provider=microsoft.jet.oledb.4.0;[br]data source=" & server.mappath("images.mdb") [/p] [p]創(chuàng)建connection對(duì)象,并連接microsoft access數(shù)據(jù)庫(kù)。 [/p] [p] [/p] [p]set rec=server.createobject("adodb.recordset")[/p] [p]rec.open "select * from images where id is null",conngraph,1,3[/p] [p]rec.addnew[/p] [p]rec("img").appendchunk mydata [/p] [p]創(chuàng)建recordset對(duì)象,打開(kāi)數(shù)據(jù)庫(kù)并置為寫(xiě)入狀態(tài),執(zhí)行rec.addnew增加一條新記錄,調(diào)用field對(duì)象的appendchunk方法將圖片數(shù)據(jù)保存到數(shù)據(jù)庫(kù)表的字段中。 [/p] [p] [/p] [p]后邊幾句關(guān)閉數(shù)據(jù)庫(kù),釋放定義組件的設(shè)置。 [/p] [p] [/p] [p]三、 圖片的讀取程序showing.asp [/p] [p] [/p] [p]<%[/p] [p]set conngraph=server.createobject("adodb.connection")[/p] [p]conngraph.open "provider=microsoft.jet.oledb.4.0;[br]data source=" & server.mappath("images.mdb")[/p] [p]set rec=server.createobject("adodb.recordset")[/p] [p]id=trim(request.querystring("id"))[/p] [p]strsql="select img from images where id="&request.querystring("id")&""[/p] [p]rec.open strsql,conngraph,1,1[/p] [p]response.contenttype = "image/gif"[/p] [p]response.binarywrite rec("img").getchunk(7500000)[/p] [p]rec.close[/p] [p]set rec=nothing[/p] [p]set conngraph=nothing[/p] [p]%> [/p] [p]以上程序是顯示圖片的后臺(tái)程序,主要功能是按照要求的id號(hào)讀取數(shù)據(jù)庫(kù)中圖片的數(shù)據(jù)。 [/p] [p] [/p] [p]response.binarywrite rec("img").getchunk(7500000) [/p] [p]這里調(diào)用了field對(duì)象的getchunk(size)方法,size是字節(jié)數(shù)。 [/p] [p] [/p] [p]需要注意的是使用response對(duì)象的 contenttype屬性時(shí)mime類(lèi)型的設(shè)置,我們這里將返回?cái)?shù)據(jù)的類(lèi)型設(shè)為圖形方式即image/gif方式,它可以顯示gif或jpg格式的圖形,如果設(shè)置為image/*,程序在執(zhí)行時(shí)將不能顯示圖片。 [/p] [p] [/p] [p]四、 圖片的顯示程序show.html [/p] [p] [/p] [p]圖片上傳保存到數(shù)據(jù)庫(kù)里就可以調(diào)用程序顯示圖片了,我們?cè)僮鲆粋€(gè)表單程序,提供要顯示圖片的id號(hào)。 [/p] [p] [/p] [p][/p] [p][/p] [p] [p][/p] [p] [p][/p] [p][/p] 該文章在 2010/5/11 16:11:09 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |