網(wǎng)站建設(shè)
時間 : 2020-02-07 10:10 瀏覽量 : 41在ASP中,F(xiàn)SO的意思是File System Object,即文件系統(tǒng)對象。我們將要操縱的計算機(jī)文件系統(tǒng),在這里是指位于web服務(wù)器之上。所以,確認(rèn)你對此擁有合適的權(quán)限。理想情況下,你可以在自己的機(jī)器上建立一個web服務(wù)器,這樣就能方便地進(jìn)行測試。如果運(yùn)行于Windows平臺,請試一試微軟公司的免費(fèi)個人Web服務(wù)器PWS。FSO對象包括 :驅(qū)動器對象(Drive Object)用來存取本地盤或網(wǎng)絡(luò)盤,文件系統(tǒng)對象(FielSystemObject 簡稱FSO)是用來存取文件系統(tǒng),文件夾對象(Folder Object)用于存取文件夾的各種屬性 ,文本流對象(TextStream Object 簡稱TS)存取文件內(nèi)容 。
在使用以上對象,你的確可以在一臺電腦上為所欲為,但同樣也可能會造成災(zāi)難,所以在使用FSO的時候要注意安全,特別是在Web應(yīng)用中,Web服務(wù)器中會存儲諸如用戶信息,日志文件等等重要信息,更要格外小心。如何使用FSO? 要開始干“壞事”之前,首先要學(xué)會建立FSO。如果你曾經(jīng)在ASP中創(chuàng)建過對象,那么這事好辦: <% Set fso = Server.CreateObject("Scripting.FileSystemObject") %> ?,F(xiàn)在我們已經(jīng)建立了FSO,并賦值給變量fso,接下來就可以使用我們熟悉的object.method方法來使用它了(如果你對對象的操作不熟悉,請自己去補(bǔ)課,這里恕不奉陪)。
在下面的例子中,主要使用的是fso.method和fso.property。 (FSO模塊來自微軟提供的腳本運(yùn)行庫scrrun.dll中,許多應(yīng)用系統(tǒng)都會調(diào)用它,例如Access,Word等等,并非專為ASP應(yīng)用開發(fā)。) 下面是我們要用到的部分FSO方法: CopyFile 拷貝一個或多個文件 ,CreateTextFile 創(chuàng)建一個文件并返回一個TS對象 ,DeleteFile 刪除一個文件 ,OpenTextFile 打開一個文件并返回一個可用于讀和添加的TS對象。 要獲得完整的FSO方法,請參看MSDN,下面看個例子吧。好,現(xiàn)在我們的guestbook里已經(jīng)存儲了不少用戶的信息了,如果這時一個用戶想看看我們訪客的信息,我們得把信息再還原出來。由于不是數(shù)據(jù)庫,得自己動手來解決分段問題??纯磘est.txt,每三行就是一個用戶的信息,好辦:
%>
(這里我們只是將信息簡單輸出,你可以根據(jù)實(shí)際情況作調(diào)整,包括輸出到表格和DHTML form中。) ReadLine方法用于從文件中讀取一行,下次調(diào)用ReadLine方法將讀取下一行。AtEndOfStream是TS對象的一個屬性,讓你知道是否到達(dá)文件結(jié)尾。 假設(shè)由于某種原因文件有問題,例如某個用戶只有兩行,那么我們會得到以下錯誤信息: Server object error 'ASP 0177 : 800a003e' ,所以加入一些錯誤處理代碼是必要的?,F(xiàn)在我們已經(jīng)對FSO有一些基本認(rèn)識了,是時候來討論一下FSO的權(quán)限問題。FSO的讀取權(quán)限就是創(chuàng)建FSO的賬號所擁有的權(quán)限。如果某人從Internet上使用這個頁面,那么創(chuàng)建FSO的就是Internet賬號。
如果你用administrator本機(jī)登錄并訪問頁面,那么建立的FSO就擁有administrator的權(quán)限。 Internet賬號(IUSER_機(jī)器名)通常只有讀權(quán)限,這意味著用戶永遠(yuǎn)無法寫guestbook文件。所以必須想辦法解決。 第一個辦法,是讓用戶首先要用一個有寫權(quán)限的賬號登錄。但實(shí)際上所有從Internet訪問的用戶都是以anonymous登錄,所以這個方法比較難實(shí)現(xiàn)。 第二個方法是建立一個允許賬號為 IUSER_機(jī)器名 的用戶讀寫的目錄。但這樣可能會帶來安全漏洞。如果這個目錄讓黑客知道了,就可以往里面寫一些代碼并通過某種方式運(yùn)行它,那你就慘了。所以最好將這個目錄建立在Web路徑之外(也就是inetpub路徑之外)。
Search objFolder
上面的代碼只是進(jìn)行了一些變量初始化工作,真正的serach工作由下面這個Search函數(shù)執(zhí)行。
strFileContents = objTextStream.ReadAll
Next
End Function
該程序會自動搜索Web root目錄以下的所有子目錄,還不錯吧? (FSO要使用物理絕對路徑,而不是Web Path的相對路徑。例如,要打開的是c:inetpubwwwroottempindex.html,而不能是www.enfused.com/temp/index.html 或 /temp/index.html。要將后一種路徑轉(zhuǎn)換為物理絕對路徑,使用Server.MapPath("filename")。) FSO還是存在一些弱點(diǎn)。例如,它在處理二進(jìn)制文件的時候就不那么方便。對于象MS Word文檔,圖像等許多文件,你只能執(zhí)行移動,刪除等操作,而不能打開,讀/寫。當(dāng)然,F(xiàn)SO提供了另外一套操作它們的方法(具體請參考MSDN),但始終不如我們慣用的open方法那么順手。