ASP(Active Server Pages)是Microsoft很早就推出的一種WEB應用程序解決方案,也是絕大多數從事網站開發人員很熟悉的一個比較簡單的編程環境。通過ASP我們可以創建功能強大的動態的WEB應用程序。ASP雖然功能很強大,但有些功能用純ASP代碼完成不了,為了能保證開發出功能更加強大的WEB應用程序,我們可以借助調用COM組件。
在日常工作中,例如開發一個“商品網上銷售系統”吧,為了使顧客對商品的外觀有所了解,也就是顧客在看商品的文字介紹的同時在文字的旁邊有該商品的圖片加以說明,這樣顧客就可以對該商品有個系統的了解,對推銷商品有很大的幫助。所以我們在開發系統時當然就要加入圖片處理模塊,即如何把圖片上傳到服務器(圖片可以放在WEB服務器上某一個文件夾裡也可以放在SQL Server服務器裡)和如何讓上傳的圖片在浏覽器端顯示出來,這都是開發人員要考慮到的問題。
上傳圖片到服務器有多種方法,可以使用文件上傳組件也可以使用純ASP代碼來實現。在CSDN的WEB版ASP上經常有網友問這樣的問題“如何利用ASP把圖片上傳到數據庫裡”,為了方便CSDN需要了解這方面的知識,這篇文章將詳細講解使用ASP上傳圖片的做法並給出代碼,以飨讀者。
首先了解一下在程序中用到的各種對象及其語法:
1) Request.BinaryRead()方法
● 使用Request.BinaryRead()方法可以獲取提交的文件數據
● 語法
VarReValue= Request.BinaryRead(number)
變量VarReValue返回值保存從客戶端讀取到的二進制數據;
參數number指明要從客戶端讀取的二進制數據量的大小。
2) Response.BinaryWrite()方法
● 使用Response.BinaryWrite()方法可以從數據庫中獲取圖片數據並顯示到客戶端的浏覽器中。
● 語法
Response.BinaryWrite data
參數data是要寫進客戶端浏覽器中的二進制數據包。
3) AppendChunk方法
● AppendChunk方法的作用是將二進制數據追加到FIEld或Parameter對象。
● 語法
object.AppendChunk data
參數data為要追加到FIEld或Parameter對象中的數據包。
4) GetChunk方法
● GetChunk方法返回二進制數據的內容。
● 語法
object. GetChunk(size)
參數size指明要返回二進制數據的長度,可以是長整型表達式。
5) Request.TotalBytes方法
● Request.TotalBytes方法返回從客戶端讀取到的數據的字節數,這個值跟上面所提到的number相對應,可以大於或等於number值。
● 語法
number= Request.TotalBytes
大體了解了一些方法及其使用方法後,接下來我們就開始設計數據庫和相關編寫代碼了。
第一步:數據庫的設計(以Ms SQL Server7為例):
Create table img --創建用來存儲圖片的表,命名為img
(
id int identity(1,1) not null,
img image
)
第二步:程序編寫,其中省略了用戶輸入界面,這裡只給出很重要的兩個文件即圖片上傳處理(PRocessimg.asp)和顯示圖片(ShowImg.ASP)文件。
1) processimg.ASP文件代碼:
<%
Response.Buffer=True
ImageSize=Request.TotalBytes ‘獲取提交數據量的總字節數
ImageData=Request.BinaryRead(ImageSize) ‘保存從客戶端讀取到的數據
‘優化讀取到的二進制數據
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)
‘創建對象實例
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
‘追加數據到數據庫
Rs.AddNew
Rs(“img”).AppendChunk myData
Rs.Update
‘關閉和釋放對象
Rs.close
ImgConn.close
Set Rs=Nothing
Set ImgConn=Nothing
%>
2) ShowImg.ASP文件代碼:
<%
Response.Expires = 0
Response.buffer=True
Response.clear
‘創建對象實例
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 img From img Where id=1” 這裡的id可以使用Request(“id”)獲得
Rs.open sql,imgConn,1,1
Response.ContentType=”image/*”
Response.BinaryWrite Rs.(“img”).GetChunk(7500000)
‘關閉和釋放對象
Rs.close
ImgConn.close
Set Rs=Nothing
Set ImgConn=Nothing
%>
至此,本文對如何使用ASP上傳圖片的原理和示例都講完了,有什麼不妥的地方請各位指正,謝謝!同時希望本文能夠確實能為需要這方面幫助的網友提供實質性的幫助。