6.3.2 SA-FileUP組件 在很多Web網(wǎng)站上,一個(gè)常規(guī)要求是,服務(wù)器接受客戶機(jī)發(fā)送的文件的能力如何?在IIS 4.0里,Microsoft提供了一個(gè)名為Posting Acceptor組件完成這項(xiàng)工作,IIS 5.0和ASP 3.0的標(biāo)準(zhǔn)安裝中沒(méi)有該組件,如果安裝Site Server Express的話,則需要包含這一組件。可以從Microsoft Web網(wǎng)站http://www.microsoft.com/windows/software/webpost/post_accept.htm上下載該組件。 然而,很多人發(fā)現(xiàn)Posting Acceptor組件在功能上有局限性且很難編程。現(xiàn)在一個(gè)流行的替代品是來(lái)自Software Artisans的SA-FileUP組件。與Posting Acceptor組件(僅是ISAPI型過(guò)濾器)不同,SA-FileUP組件是一個(gè)真正的ActiveX DLL服務(wù)器組件,容易集成到ASP網(wǎng)頁(yè)中。這意味著可以使用別的ASP頁(yè)面或組件上使用的相同的有關(guān)設(shè)定頁(yè)面安全保護(hù)及限制用戶訪問(wèn)的技術(shù)。該組件也可在MTS/COM+的環(huán)境中上運(yùn)行。 使用SA-FileUP組件的教程可在http://www.activeserverpages.com/upload/technique_3/站點(diǎn)上找到,所以這里只給出了結(jié)果。本章的示例中包含了使用該組件的示例頁(yè)面(在Chapter06目錄下的SAFileUP子目錄中),可用來(lái)了解如何使用該組件,有必要的話可從Software Artisans網(wǎng)站http://www.softartisans.com/上下載SA-FileUP的拷貝。 使用SA-FileUP組件 SA-FileUP組件的示例頁(yè)面創(chuàng)建了一個(gè)簡(jiǎn)單的頁(yè)面,包含一個(gè)FileUpload元素和一個(gè)按鈕,并使用了HTML的INPUT元素,如圖6-28所示:
圖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í)例,并且開(kāi)始向服務(wù)器上傳信息,以后組件返回一系列描述上傳的文件的數(shù)據(jù),如圖6-29所示:
圖6-29 使用SA-FileUP組件的結(jié)果 SA-FileUP組件讀取文件并把它以標(biāo)準(zhǔn)的磁盤(pán)文件或二進(jìn)制的數(shù)據(jù)庫(kù)數(shù)據(jù)的形式暫存在服務(wù)器上。有了它,就能用ASP控制上傳過(guò)程、限制上傳文件的大小,甚至刪除上傳文件,也能動(dòng)態(tài)地改變其名字和上傳文件的位置。
6.3.3 RegEx注冊(cè)表訪問(wèn)組件 Microsoft IIS 4.0提供的一個(gè)示例組件能夠訪問(wèn)服務(wù)器上的系統(tǒng)注冊(cè)表。這個(gè)功能有助于檢查諸如安裝的軟件的版本,或者檢查IIS和操作系統(tǒng)使用的各種參數(shù)。 在IIS 5.0中取消了這個(gè)組件,但如果需要這個(gè)功能,可以從其他商用版本中獲得。RegEx組件是其中之一,能夠訪問(wèn)本地機(jī)器注冊(cè)表的任何部分(假如允許當(dāng)前用戶訪問(wèn))。在ASP頁(yè)面的匿名訪問(wèn)中,當(dāng)前用戶是IUSR_machinename帳戶。 1. RegEx組件的成員 RegEx組件提供了四個(gè)讀寫(xiě)注冊(cè)表的方法和一個(gè)訪問(wèn)內(nèi)部組件版本信息的方法,如表6-11所示。全部信息和文檔隨RegEx組件提供,其測(cè)試版本可以從http://www.stonebroom.com/下載。其附帶的示例頁(yè)面包含在本書(shū)提供的示例中,然而你需要自己下載組件本身。 表6-11 RegEx 組件方法及說(shuō)明 方 法 說(shuō) 明
GetRegValue(RegistryHive,SubKeyString) 從注冊(cè)表中返回給定的子鍵的缺省值,如果其值不能訪問(wèn)的話,則返回一個(gè)空字符串
SetRegValue(RegistryHive,SubKeyString, NewValue) 在給定的子鍵中,創(chuàng)建或更新“缺省”值,把數(shù)據(jù)類(lèi)型設(shè)置成Reg_SZ(字符串)。如果更新成功的話,返回True;否則,返回False
GetRegValueEx(RegistryHive,SubKeyString, ValueMane,ValueType) 從特定的子鍵中返回被命名的值,用返回?cái)?shù)值的數(shù)據(jù)類(lèi)型,更新方法的最后一個(gè)參數(shù)所指定的變量。如果數(shù)值不能訪問(wèn)的話,則返回一個(gè)空字符串,并且REG_ERROR作為數(shù)據(jù)類(lèi)型
SetRegValueEx(RegistryHive,SubKeyString, ValueName,NewValue,ValueType) 在給定的子鍵中,創(chuàng)建或更新被命名的數(shù)值,把數(shù)據(jù)類(lèi)型設(shè)置為方法的最后一個(gè)參數(shù)指定的類(lèi)型data_type。如果更新成功的話,返回True;否則返回False
GetInternalVersionNumber() 返回組件的內(nèi)部版本號(hào),如果是一個(gè)測(cè)試版本,返回值之中也包含這些信息
2. 使用RegEx組件 RegEx組件提供了一個(gè)用Visual Basic編寫(xiě)的示例程序,可用來(lái)試驗(yàn)其中包含的方法,實(shí)例程序使用RegEx組件,允許對(duì)系統(tǒng)注冊(cè)表的任何部分以所支持的數(shù)據(jù)類(lèi)型之一或以缺省的字符串?dāng)?shù)據(jù)類(lèi)型讀寫(xiě)數(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í)沒(méi)有限制。圖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ù)器組件和其他類(lèi)型的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è)很重要的組件沒(méi)有涉及到,它就是ADO。在討論這個(gè)問(wèn)題之前,先來(lái)討論另一個(gè)基本問(wèn)題:錯(cuò)誤處理和程序調(diào)試。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!