sponse.write("Email: " & file.ReadLine & "<p>")
loop
' 关闭并清除
file.close
set file = nothing
set fso = nothing
%>
(这里我们只是将信息简单输出,你可以根据实际情况作调整,包括输出到表格和DHTML form中。)
ReadLine方法用于从文件中读取一行,下次调用ReadLine方法将读取下一行。AtEndOfStream是TS对象的一个属性,让你知道是否到达文件结尾。
假设由于某种原因文件有问题,例如某个用户只有两行,那么我们会得到以下错误信息:
Server object error 'ASP 0177 : 800a003e'
所以加入一些错误处理代码是必要的。
FSO的权限问题
现在我们已经对FSO有一些基本认识了,是时候来讨论一下FSO的权限问题。FSO的读取权限就是创建FSO的账号所拥有的权限。如果某人从Internet上使用这个页面,那么创建FSO的就是Internet账号。如果你用administrator本机登录并访问页面,那么建立的FSO就拥有administrator的权限。
Internet账号(IUSER_机器名)通常只有读权限,这意味着用户永远无法写guestbook文件。所以必须想办法解决。
第一个办法,是让用户首先要用一个有写权限的账号登录。但实际上所有从Internet访问的用户都是以anonymous登录,所以这个方法比较难实现。
第二个方法是建立一个允许账号为 IUSER_机器名 的用户读写的目录。但这样可能会带来安全漏洞。如果这个目录让黑客知道了,就可以往里面写一些代码并通过某种方式运行它,那你就惨了。所以最好将这个目录建立在Web路径之外(也就是inetpub路径之外)。
用FSO实现search功能
现在让我们来做更进一步的工作,用FSO在我们的Web站点上实现search功能。建立搜索引擎的关键是递归。
首先来建立搜索页面。假设我们已经给用户提供了一个输入搜索字符串的页面。
Dim objFolder
Dim strSearchText
Dim objFSO
strSearchText = Request.Form("SearchText") <-- 搜索字符串
' 建立 FSO 和文件夹对象
Set fso = Server.CreateObject("scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath("/"))
Search objFolder
上面的代码只是进行了一些变量初始化工作,真正的serach工作由下面这个Search函数执行。
Function Search(objFolder)
Dim objsubFolder
'循环搜寻当前文件夹中的每个文件
For Each objFile in objFolder.Files
Set objTextStream = objFSO.OpenTextFile(objFile.Path,1) <-- For Reading
'把文件内容读入一个变量
strFileContents = objTextStream.ReadAll
'如果在文件中找到该字符串,写个指到该文件的链接
If InStr(1, strFileContents, strSearchText, 1) then
Response.Write "<A HREF=""/" & objFile.Name &""">" & objFile.Name & "</A><BR>"
bolFileFound = True
End If
objTextStream.Close
Next
'以下是递归部分
' 如果其中有子目录,再调用Search函数
For Each objsubFolder in objFolder.SubFolders
Search objsubFolder
Next
End Function
该程序会自动搜索Web root目录以下的所有子目录,还不错吧?
(FSO要使用物理绝对路径,而不是Web Path的相对路径。例如,要打开的是c:\inetpub\wwwroot\temp\index.html,而不能是www.enfused.com/temp/index.html 或 /temp/index.html。要将后一种路径转换为物理绝对路径,使用Server.MapPath("filename")。)
随着文件和子目录数的增加,程序运行的时间会变长。所以如果是要提供繁重的搜寻功能,还是建议使用象 Microsoft Index Server这样的专业工具。
用FSO进行目录管理
现在知道FSO的好处了吧?下面我们尝试用FSO来做更复杂一些的工作。
Web目录管理就是在Web环境下进行文档的新建删除改名移动等工作,一个好的Web目录管理工具可以为用户提供一个与我们惯用的环境一样的操作方法来管理Web服务器上的文件。
那么先让我们来试试文件改名。首先要告诉大家,不幸得很,FSO不允许直接文件改名,所以我们要绕个弯进行。
<%
' 建立fso对象
set fso = Server.Createobject("scripting.FileSystemObject")
path = "c:\temp\test.txt"
strDate = Replace(Date(), "/", "")
strDir = "c:\inetpub\wwwroot\articles\" & strDate
strNewFileName = Hour(Now) & "_" & Minute(Now) & "_" &second(Now) & ".html"
' 打开旧文件
set file = fso.opentextfile(path, 1) <-- 用于读
strText = file.readall
set file = nothi
上一页 [1] [2] [3] 下一页