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