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