我們?cè)陂_發(fā)Asp系統(tǒng)時(shí)經(jīng)常要加入圖片處理模塊,即如何把圖片上傳到服務(wù)器(圖片可以放在WEB服務(wù)器上某一個(gè)文件夾里也可以放在SQL Server服務(wù)器里)和如何讓上傳的圖片在瀏覽器端顯示出來(lái),這都是開發(fā)人員要考慮到的問(wèn)題。
上傳圖片到服務(wù)器有多種方法,可以使用文件上傳組件也可以使用純ASP代碼來(lái)實(shí)現(xiàn)。在CSDN的WEB版ASP上經(jīng)常有網(wǎng)友問(wèn)這樣的問(wèn)題“如何利用ASP把圖片上傳到數(shù)據(jù)庫(kù)里”,為了方便CSDN需要了解這方面的知識(shí),這篇文章將詳細(xì)講解使用ASP上傳圖片的做法并給出代碼,以饗讀者。
本站提供本篇文章源代碼下載:點(diǎn)擊此次進(jìn)行下載
首先了解一下在程序中用到的各種對(duì)象及其語(yǔ)法:
1) Request.BinaryRead()方法
● 使用Request.BinaryRead()方法可以獲取提交的文件數(shù)據(jù)
● 語(yǔ)法
VarReValue= Request.BinaryRead(number)
變量VarReValue返回值保存從客戶端讀取到的二進(jìn)制數(shù)據(jù);
參數(shù)number指明要從客戶端讀取的二進(jìn)制數(shù)據(jù)量的大小。
2) Response.BinaryWrite()方法
● 使用Response.BinaryWrite()方法可以從數(shù)據(jù)庫(kù)中獲取圖片數(shù)據(jù)并顯示到客戶端的瀏覽器中。
● 語(yǔ)法
Response.BinaryWrite data
參數(shù)data是要寫進(jìn)客戶端瀏覽器中的二進(jìn)制數(shù)據(jù)包。
3) AppendChunk方法
● AppendChunk方法的作用是將二進(jìn)制數(shù)據(jù)追加到Field或Parameter對(duì)象。
● 語(yǔ)法
object.AppendChunk data
參數(shù)data為要追加到Field或Parameter對(duì)象中的數(shù)據(jù)包。
4) GetChunk方法
● GetChunk方法返回二進(jìn)制數(shù)據(jù)的內(nèi)容。
● 語(yǔ)法
object. GetChunk(size)
參數(shù)size指明要返回二進(jìn)制數(shù)據(jù)的長(zhǎng)度,可以是長(zhǎng)整型表達(dá)式。
5) Request.TotalBytes方法
● Request.TotalBytes方法返回從客戶端讀取到的數(shù)據(jù)的字節(jié)數(shù),這個(gè)值跟上面所提到的number相對(duì)應(yīng),可以大于或等于number值。
● 語(yǔ)法
number= Request.TotalBytes
大體了解了一些方法及其使用方法后,接下來(lái)我們就開始設(shè)計(jì)數(shù)據(jù)庫(kù)和相關(guān)編寫代碼了。
第一步:數(shù)據(jù)庫(kù)的設(shè)計(jì)(以Ms SQL Server7為例):
Create table img –創(chuàng)建用來(lái)存儲(chǔ)圖片的表,命名為img
(
id int identity(1,1) not null,
img image
)
第二步:程序編寫,其中省略了用戶輸入界面,這里只給出很重要的兩個(gè)文件即圖片上傳處理(processimg.asp)和顯示圖片(ShowImg.asp)文件。
1) processimg.asp文件代碼:
〈%
Response.Buffer=True
ImageSize=Request.TotalBytes ‘獲取提交數(shù)據(jù)量的總字節(jié)數(shù)
ImageData=Request.BinaryRead(ImageSize) ‘保存從客戶端讀取到的數(shù)據(jù)
‘優(yōu)化讀取到的二進(jìn)制數(shù)據(jù)
BnCrLf=chrB(13)&chr(10)
Divider=LeftB(ImageData,Clng(InstrB(ImageData, BnCrLf))-1)
Dstart=InstrB(ImageData, BnCrLf& BnCrLf)+4
Dend=InstrB(Dstart+1, ImageData, Divider)- Dstart
MyData=MidB(ImageData, Dstart, Dend)
‘創(chuàng)建對(duì)象實(shí)例
Set imgConn=Server.CreateObject(“ADODB.Connection”)
StrConn=”Driver={SQL Server};Server=ServerName;”& _
“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”
imgConn.open strConn
Set Rs= Server.CreateObject(“ADODB.RecordSet”)
Sql=”Select * From img Where id is null”
Rs.open sql,imgConn,1,3
‘追加數(shù)據(jù)到數(shù)據(jù)庫(kù)
Rs.AddNew
Rs(“img”).AppendChunk myData
Rs.Update
‘關(guān)閉和釋放對(duì)象
Rs.close
ImgConn.close
Set Rs=Nothing
Set ImgConn=Nothing
%〉
2) ShowImg.asp文件代碼: