?? 上傳組件(1)-文章來自httpwww.aspcn.com asp中華網.txt
字號:
作者:cooljack
日期:00-5-29 上午 10:02:04
介紹 我們很多的朋友想編寫一個上載組件,或者是一個無組件上傳的文件,我想這篇文章對你們有幫助。這編文章中我將介紹一個很重要的屬性multipart/form-data.如果你們對它非常了解,就請您跳過去吧!下篇我們會來具體講講怎樣做一個上傳組件 在線上傳是指在客戶端使用瀏覽器就將任意文件上傳到服務器上。所以這個對我們的瀏覽器也是有要求的,需要支持RFC1867,Netscape 3.0 ,IE3.0以上的版本都是支持的(現在用得很廣泛了,所以瀏覽器是沒有問題了)。上傳是通過,HTML的表單來進行的。在這個表單中有一個屬性為:ECTYPE="multipart/form-data",當然這個表單中也得有個項,不然我們上傳什么啊! ENCTYPE="multipart/form-data"指示瀏覽器發送多項格式數據到服務器。每個數據項擁有一個數字頭。分開數據項的是一長條分隔符(后面可以看到)。到了服務器,我們再用程序來分離這些數據項。我們可以用ASP腳本,還有上傳組件(下一節介紹)。
使用Request.BinaryRead方法來讀取POST過來的數據 讓我們來開始我們的上傳過程吧!首先我們會來看一段標準的HTML代碼,這個代碼中的表單沒有Enctype屬性,但是使用了Request.BinaryRead方法來讀取發送到服務器的沒有解析的全部數據。這個方法需要一個參數,就是讀取數據的長度。所以我們還得測試一下發來的數據的長度。測試長度有幾種方法,比如環境變量Content_Length就能搞定,這里我們用Request.TotalBytes這個屬性 Request.BinaryRead方法是ASP中自帶的方法,我們之所以以前沒有看到是因為使用Request.Form和Requst.QueryString更簡單和實用。這兩種方法已經把傳來的數據分成了一個關聯數組,我們只需調用就行了。但是這里我們就得用Request.BinaryRead方法。原因嘛,往下看就知道了。 下面的代碼是沒有使用Enctype屬性的,文件名為test.htm: 下面是script.asp中代碼: 注意:我們使用 MidB 函數來轉換BinaryRead讀取來的數據,使我們看看我們到底收到了什么數據,這里我們也能用Response.BinaryWrite來查看. 下面是提交后,script.asp執行的結果: Item1=test+test&Item2=Value2 我們一下就能認出這是標準的URL編碼 現在我們加一個ENCTYPE="multipart/form-data"到我們的test.htm 的表單中去,然后再次提交,看看會出現什么,以下是執行后的結果: -----------------------------7ce9c39120306Content-Disposition: form-data; name="Item1"test test-----------------------------7ce9c39120306Content-Disposition: form-data; name="Item2"Value2-----------------------------7ce9c39120306-- 通過分隔線我們能夠看到有明顯的兩段。每一段都包含著我們提交表單中的內容。另外每一段我們還能看到一些MIME頭信息 現在我們用Request.Form方法來接收數據,嘻嘻,我們將什么也看不到,另外還有一段出錯信息。如果沒有ENCTYPE="multipart/form-data"我們用Request.Form看到只是想上傳的文件名,現在就能看到上傳的內容了,不過Request.Form就不能用了. 我們現在來操作一次:我們在test.htm上傳表單中單擊“瀏覽”按鈕。這就會彈出一個文件選擇框,在這里我們來選擇你想上傳的文件。你也可以直接在文本框中輸入文件的路徑。 注意:如果你的瀏覽器看不到“瀏覽”這個按鈕的話,八成是你的瀏覽不支持上傳。 在這里我選擇了一個gif 圖形,提交后看到的如下: -----------------------------7ce25134120306Content-Disposition: form-data; name="FileItem"; filename="D:\HomePage\New\bg.gif"Content-Type: image/gifGIF89a? ?
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -