直播中
圖6-28 使用SA-FileUp組件的示例頁(yè)面
<FORM ACTION="safileup_response.asp"
ENCTYPE="MULTIPART/FORM-DATA" METHOD="POST">
…
<INPUT TYPE="FILE" NAME="FILE1">
…
<INPUT TYPE="SUBMIT" NAME="SUB1" VALUE="Upload File">
…
</FORM>
用戶提交窗體時(shí),其中的內(nèi)容傳送給了服務(wù)器,并且ASP頁(yè)面創(chuàng)建了一個(gè)組件實(shí)例,并且開始向服務(wù)器上傳信息,以后組件返回一系列描述上傳的文件的數(shù)據(jù),如圖6-29所示:
圖6-29 使用SA-FileUP組件的結(jié)果
SA-FileUP組件讀取文件并把它以標(biāo)準(zhǔn)的磁盤文件或二進(jìn)制的數(shù)據(jù)庫(kù)數(shù)據(jù)的形式暫存在服務(wù)器上。有了它,就能用ASP控制上傳過程、限制上傳文件的大小,甚至刪除上傳文件,也能動(dòng)態(tài)地改變其名字和上傳文件的位置。
6.3.3 RegEx注冊(cè)表訪問組件
Microsoft IIS 4.0提供的一個(gè)示例組件能夠訪問服務(wù)器上的系統(tǒng)注冊(cè)表。這個(gè)功能有助于檢查諸如安裝的軟件的版本,或者檢查IIS和操作系統(tǒng)使用的各種參數(shù)。
在IIS 5.0中取消了這個(gè)組件,但如果需要這個(gè)功能,可以從其他商用版本中獲得。RegEx組件是其中之一,能夠訪問本地機(jī)器注冊(cè)表的任何部分(假如允許當(dāng)前用戶訪問)。在ASP頁(yè)面的匿名訪問中,當(dāng)前用戶是IUSR_machinename帳戶。
1. RegEx組件的成員
RegEx組件提供了四個(gè)讀寫注冊(cè)表的方法和一個(gè)訪問內(nèi)部組件版本信息的方法,如表6-11所示。全部信息和文檔隨RegEx組件提供,其測(cè)試版本可以從http://www.stonebroom.com/下載。其附帶的示例頁(yè)面包含在本書提供的示例中,然而你需要自己下載組件本身。
表6-11 RegEx 組件方法及說明
方 法
說 明
GetRegValue(RegistryHive,SubKeyString)
從注冊(cè)表中返回給定的子鍵的缺省值,如果其值不能訪問的話,則返回一個(gè)空字符串
SetRegValue(RegistryHive,SubKeyString,
NewValue)
在給定的子鍵中,創(chuàng)建或更新“缺省”值,把數(shù)據(jù)類型設(shè)置成Reg_SZ(字符串)。如果更新成功的話,返回True;否則,返回False
GetRegValueEx(RegistryHive,SubKeyString,
ValueMane,ValueType)
從特定的子鍵中返回被命名的值,用返回?cái)?shù)值的數(shù)據(jù)類型,更新方法的最后一個(gè)參數(shù)所指定的變量。如果數(shù)值不能訪問的話,則返回一個(gè)空字符串,并且REG_ERROR作為數(shù)據(jù)類型
SetRegValueEx(RegistryHive,SubKeyString,
ValueName,NewValue,ValueType)
在給定的子鍵中,創(chuàng)建或更新被命名的數(shù)值,把數(shù)據(jù)類型設(shè)置為方法的最后一個(gè)參數(shù)指定的類型data_type。如果更新成功的話,返回True;否則返回False
GetInternalVersionNumber()
返回組件的內(nèi)部版本號(hào),如果是一個(gè)測(cè)試版本,返回值之中也包含這些信息
2. 使用RegEx組件
RegEx組件提供了一個(gè)用Visual Basic編寫的示例程序,可用來試驗(yàn)其中包含的方法,實(shí)例程序使用RegEx組件,允許對(duì)系統(tǒng)注冊(cè)表的任何部分以所支持的數(shù)據(jù)類型之一或以缺省的字符串?dāng)?shù)據(jù)類型讀寫數(shù)據(jù),如圖6-30所示。在進(jìn)行任何更新之前會(huì)顯示一個(gè)警告以防止意外操作。
圖6-30 使用RegEx組件的示例程序
另外還有一個(gè)比較簡(jiǎn)單的ASP實(shí)例,可顯示W(wǎng)eb服務(wù)器注冊(cè)表中的一些數(shù)據(jù),并且允許讀和設(shè)置一個(gè)“測(cè)試”子鍵??梢孕薷倪@個(gè)頁(yè)面,在你自己的應(yīng)用程序中使用時(shí)沒有限制。圖6-31所示的是在NT4和IIS 4.0上運(yùn)行的結(jié)果。
圖6-31 使用RegEx組件的另一示例的結(jié)果
要記住,改變注冊(cè)表中的數(shù)值可能導(dǎo)致系統(tǒng)不正常地工作,編輯注冊(cè)表內(nèi)容這前應(yīng)該備份注冊(cè)表文件。
6.4 小結(jié)
本章討論了ASP如何利用服務(wù)器組件增加其他組件所不能提供的特性,也考慮了服務(wù)器組件和其他類型的ASP對(duì)象(如ASP內(nèi)置的對(duì)象和在腳本運(yùn)行期庫(kù)中的對(duì)象)的區(qū)別。
在研究由ASP 3.0和IIS 5.0提供的可安裝組件之后,介紹了三個(gè)提供常規(guī)要求的功能的商用組件,也列出了幾個(gè)可以從Web上下載的通用組件,其中有一些是免費(fèi)的或者是共享/測(cè)試版本。 然而,至今我們還有一個(gè)很重要的組件沒有涉及到,它就是ADO。在討論這個(gè)問題之前,先來討論另一個(gè)基本問題:錯(cuò)誤處理和程序調(diào)試。