用ASP編寫網(wǎng)站應(yīng)用程序時(shí)間長了,難免會(huì)遇到各式各樣的問題,其中
關(guān)于如何上傳文件到服務(wù)器恐怕是遇見最多的問題了,尤其是上傳圖片,比如你想要在自己的社區(qū)里面實(shí)現(xiàn)類似網(wǎng)易虛擬社區(qū)提供的“每日一星”的功能,就要提供給網(wǎng)友上傳照片的功能。上傳圖片文件到服務(wù)器可以使用各種免費(fèi)的文件上傳組件,使用起來功能雖然很強(qiáng)大,但是由于很多情況下,我們只能使用免費(fèi)的支持ASP的空間或者租用別人的虛擬空間,對(duì)于第一種情況,我們根本就沒有可能來使用文件上傳組件;至于第二種情況,我們也要付出不少的“銀子”才可以。除非你擁有自己的虛擬主機(jī),你就可以隨便的在服務(wù)器上面安裝自己所需要的組件,這種情況對(duì)于大多數(shù)人來說是可望而不可及的。那我們就沒有辦法了嗎?呵呵,答案是肯定的(當(dāng)然是肯定的了,要不然我也沒法寫出這篇文章啊)。下面就讓我們一起來使用純ASP代碼來實(shí)現(xiàn)圖片的上傳以及保存到數(shù)據(jù)庫的功能(順便也實(shí)現(xiàn)顯示數(shù)據(jù)庫中的圖片到網(wǎng)頁上的功能)。
首先我們先來熟悉一下將要使用的對(duì)象方法。我們用來獲取上一個(gè)頁面?zhèn)鬟f過來的數(shù)據(jù)一般是使用Request對(duì)象。同樣的,我們也可以使用Request對(duì)象來獲取上傳上來的文件數(shù)據(jù),使用的方法是Request.BinaryRead()。而我們要從數(shù)據(jù)庫中讀出來圖片的數(shù)據(jù)顯示到網(wǎng)頁上面要用到的方法是:
Request.BinaryWrite()。在我們得到了圖片的數(shù)據(jù),要保存到數(shù)據(jù)庫中的時(shí)候,不可以直接使用Insert語句對(duì)數(shù)據(jù)庫進(jìn)行操作,而是要使用ADO的AppendChunk方法,同樣的,讀出數(shù)據(jù)庫中的圖片數(shù)據(jù),要使用GetChunk方法。各個(gè)方法的具體語法如下:
* Request.BinaryRead語法:
variant = Request.BinaryRead(count)
參數(shù)
variant
返回值保存著從客戶端讀取到數(shù)據(jù)。
count
指明要從客戶端讀取的數(shù)據(jù)量大小,這個(gè)值小于或者等于使用方法
Request.TotalBytes得到的數(shù)據(jù)量。
* Request.BinaryWrite語法:
Request.BinaryWrite data
參數(shù)
data
要寫入到客戶端瀏覽器中的數(shù)據(jù)包。
* Request.TotalBytes語法:
variant = Request.TotalBytes
參數(shù)
variant
返回從客戶端讀取到數(shù)據(jù)量的字節(jié)數(shù)。
* AppendChunk語法
將數(shù)據(jù)追加到大型文本、二進(jìn)制數(shù)據(jù) Field 或 Parameter 對(duì)?
object.AppendChunk Data
參數(shù)
object Field 或 Parameter 對(duì)象
Data 變體型,包含追加到對(duì)象中的數(shù)據(jù)。
說明
使用 Field 或 Parameter 對(duì)象的 AppendChunk 方法可將長二進(jìn)制或字符數(shù)據(jù)填寫到對(duì)象中。在系統(tǒng)內(nèi)存有限的情況下,可以使用 AppendChunk 方法對(duì)長整型值進(jìn)行部分而非全部的操作。
* GetChunk語法
返回大型文本或二進(jìn)制數(shù)據(jù) Field 對(duì)象的全部或部分內(nèi)容 。
variable = field.GetChunk( Size )
返回值
返回變體型。
參數(shù)
Size 長整型表達(dá)式,等于所要檢索的字節(jié)或字符數(shù)。
說明
使用 Field 對(duì)象的 GetChunk 方法檢索其部分或全部長二進(jìn)制或字符數(shù)據(jù)。在系統(tǒng)內(nèi)存有限的情況下,可使用 GetChunk 方法處理部分而非全部的長整型值。
GetChunk 調(diào)用返回的數(shù)據(jù)將賦給“變量”。如果 Size 大于剩余的數(shù)據(jù),則
GetChunk 僅返回剩余的數(shù)據(jù)而無需用空白填充“變量”。如果字段為空,則
GetChunk 方法返回 Null。
每個(gè)后續(xù)的 GetChunk 調(diào)用將檢索從前一次 GetChunk 調(diào)用停止處開始的數(shù)據(jù)。但是,如果從一個(gè)字段檢索數(shù)據(jù)然后在當(dāng)前記錄中設(shè)置或讀取另一個(gè)字段的值,ADO 將認(rèn)為已從第一個(gè)字段中檢索出數(shù)據(jù)。如果在第一個(gè)字段上再次調(diào)用 GetChunk 方法,ADO 將把調(diào)用解釋為新的 GetChunk 操作并從記錄的起始處開始讀取。如果其他 Recordset 對(duì)象不是首個(gè) Recordset 對(duì)象的副本,則訪問其中的字段不會(huì)破壞 GetChunk 操作。如果 Field 對(duì)象的 Attributes 屬性中的 adFldLong 位設(shè)置為 True,則可以對(duì)該字段使用 GetChunk 方法。如果在 Field 對(duì)象上使用 Getchunk 方法時(shí)沒有當(dāng)前記錄,將產(chǎn)生錯(cuò)誤 3021(無當(dāng)前記錄)。接下來,我們就要來設(shè)計(jì)我們的數(shù)據(jù)庫了,作為測試我們的數(shù)據(jù)庫結(jié)構(gòu)如下(
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注