我的人生路  
日历
<2005年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
统计
  • 随笔 - 74
  • 文章 - 57
  • 评论 - 7
  • 引用 - 0

导航

常用链接

留言簿(5)

随笔分类

随笔档案

文章分类

文章档案

相册

颜色

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
在 ASP 程序中,我们需要对文件进行操作,常常会利用到 FSO 组件,而很多人对此不是很了解,所以想到开设这个专题,用来收集 FSO 相关的介绍资料。欢迎大家补充并进行讨论。

FileSystemObject 对象模型

QUOTE
FileSystemObject (FSO) 对象模型,允许对大量的属性、方法和事件,使用较熟悉的 object.method 语法,来处理文件夹和文件。

使用这个基于对象的工具和:

HTML 来创建 Web 页
Windows Scripting Host 来为 Microsoft Windows 创建批文件
Script Control 来对用其他语言开发的应用程序提供编辑脚本的能力
因为在客户端使用 FSO 而引起重要的安全性问题,提供潜在地不受欢迎的对客户端本地文件系统的访问,假定本文档使用 FSO 对象模型,来创建由服务器端的 Internet Web 页执行的脚本。因为使用了服务器端,Internet Explorer 默认安全设置不允许客户端使用 FileSystemObject 对象。覆盖那些默认值可能会引起在本地计算机上不受欢迎的对其文件系统的访问,从而导致文件系统完整性的全部破坏,同时引起数据遗失或更糟的情况。

FSO 对象模型使服务器端的应用程序能创建、改变、移动和删除文件夹,或探测特定的文件夹是否存在,若存在,还可以找出有关文件夹的信息,如名称、被创建或最后一次修改的日期,等等。

FSO 对象模型还使文件处理变得很容易。在处理文件时,主要的目标是以易于访问的格式把数据存储在有效的空间和资源中。这就要求能够创建文件,插入和改变数据,以及输出(读取)数据。因为把数据存储在数据库中,如 Access 或 SQL 服务器,会给应用程序增加很大的开销,所以把数据存储在二进制或文本文件中可能是最有效的解决方案。可能不希望有该开销,或者数据访问要求可能不需要与功能完备的数据库相关联的所有额外功能。

包含在 Scripting 类型库 (Scrrun.dll) 中的 FSO 对象模型,支持通过 TextStream 对象来创建和操作文本文件。虽然还不支持二进制文件的创建或操作,但计划将来要支持二进制文件。


摘自 Windows 脚本手册。

相关资料:
Windows 脚本手册 下载


--------------------
纯白色
云娜音乐
54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
不学无术
post Apr 3 2005, 05:43 AM
发表于: #2


论坛管理员
*********

用户组: 管理员
发表总数: 3,801
注册日期: 1-March 03
来自: 天地人间
会员编号: 24



三种禁用 File System Object 组件的方法

众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因,我整理了一下,本来只找到两种方法,后来被某人一刺激,硬是想到第三种不为人所知的方法,呵呵,也不知道是不是这样的。

第一种:用 RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll (win98路径)来注销该组件。此方法过于狠毒,属于同归于尽的方法,大家都没得用,是下招。

第二种:修改 Progid 的值,在 ASP 里调用组件的方式通常是 Set 对象名 = Server.CreateObject("Progid"),这时候我们就可以通过修改注册表中的 Progid 值从达到禁用该组件的方法。在 开始-运行中敲入 regedit,然后找到 HKEY_CLASSES_ROOT\Scripting.FileSystemObject,这时候我们就可以更改该Progid的值了,如改成 Scripting.FileSystemObject8 。这样在ASP页里就这样调用了:
CODE

<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
%>

(如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重启后看效果。)

这时候我们看看还是用原来的调用方法的结果:
CODE
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject")
%>

这时候的运行结果为:
QUOTE
服务器对象 错误 'ASP 0177 : 800401f3'

Server.CreateObject 失败

/aspimage/testfile2.asp, 行3

800401f3

(OK,达到我们的要求)

该方法由于本人迟了两步,结果就让别人抢着回答了,这样极大的刺激了我,结果就产生了第三种方法。

第三种:细心的高手们会想,既然能通过修改Progid值来禁用该组件,那 Clsid 是否也可以来修改呢?(OK,你想得和我一样)我们知道,除了 CreateObject 方法以外,也可以使用一般的<object>标注建立一个组件,我们可以在ASP里面使用 HTM L的 <object> 标注,以便在网页中加入一个组件。方法是:
CODE
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
ect"></object>

Runat 表示是在服务端执行,Scope 表示组件的生命周期,可以选用Session, Application 或 page (表示当前页面,也可缺省)。

这种写法对我们没用,还有一种写法是:
CODE
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></object>

我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID 的值 0D43FE01-F093-11CF-8940-00A0C9054228 改成 0D43FE01-F093-11CF-8940-00A0C9054229 (改了最后面一位),这时候的写法为:
CODE
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054229"></object>

看运行结果,没问题,OK。这时候我们再用:
CODE
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054228"></object>

这时候就出错了。

新建一用户:iusr_domain
IIS里设置对应站点的匿名用户 IUSR_DOMAIN
CACLS: 设置目录权限

这样FSO可用,但不会影响别人。

作者:未知
来源:http://www.7880.com/Info/Article-a1be400.html


--------------------
纯白色
云娜音乐
54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
不学无术
post Apr 3 2005, 06:08 AM
发表于: #3


论坛管理员
*********

用户组: 管理员
发表总数: 3,801
注册日期: 1-March 03
来自: 天地人间
会员编号: 24



使用 FSO 把文本信息导入数据库

在开发WEB应用程序中,我们经常需要对文件系统中的驱动器、文件夹和文件进行处理,比如收集驱动器的相关信息;创建、添加、移动或删除文件夹和文件等。在VB6中新提供了一套称为FSO(File System Object)对象模型来对文件系统进行访问处理。该模型提供了一个基于对象的工具,通过它所提供的一系列属性和方法,我们可以在应用程序中更简单、灵活地对文件系统进行各种操作。

一、FSO简介

  FSO 对象模型包含以下几种对象:

  Drive 对象:允许收集系统物理或通过 LAN 与系统逻辑连接的硬盘、CD-ROM 等驱动器的可用空间、共享名等信息。

  Folder 对象:允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等。

  Files 对象:允许创建、删除或移动文件,并向系统查询文件的名称、路径等。

  TextStream 对象:允许创建和读写文本文件。

  FileSystemObject 对象:提供一整套用于驱动器、文件夹和文件操作的方法,在功能上可以把它看作是上面几个对象的集合并且经常与它们配合使用。与该对象相关联的很多方法重复了前面四个对象中的方法,因此我们既可以通过 FileSystemObject 对象来对驱动器、文件夹和文件进行大多数操作,也可以通过对应的驱动器、文件夹或文件对象对这些组件进行操作。FSO 模型通过两种方法实现对同一对象的操作,其操作效果是相同的,提供这种冗余功能的目的是为了实现最大的编程灵活性。

在这篇文章中,我们将讲解利用 FSO 对象模型的 TextStream 对象对文本文件的操作。

(一) 用 FileSystemObject 来获取文本文件对象

  1.创建一个 FileSystemObject 对象实例

要进行文件操作,首先必须创建一个 FileSystemObject 对象实例,用来创建或打开一个文件.创建一个 FileSystemObject 对象实例的具体格式为(以AFileSystemObject)为例:
CODE
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct")


  2.用 FileSystemObject 来获取文本文件对象 TextStream

FileSystemObject 提供了两种方法用于获取文本文件对象 TextStream,其中用于创建文件的是 CreateTextFile,用于打开已存在文件的是 OpenTextFile,两种方法的返回结果都是一个 TextStream 对象的实例,利用该对象可以进行文件的具体操作。

⑴ 创建一个新文件

  创建新文件的方法的具体格式为(以AFileSystemObject为例):
  
CODE
AFilesystemObject.CreateTextFile(NewFileName, OverwriteExistingFile, IsUnicode)

其中:
  NewFileName 是一个string值,指定要建立的文件的名称,通常为文件的实际路径加文件名称,如 C:\webshare\aspsamp\filetest.txt 。

  OverwriteExistingFile 是一个Boolean值,表示如果有同名文件存在时是否覆盖原来的文件。该参数可以省略,缺省时为 False,即不覆盖原来文件。

  IsUnicode 是一个Boolean值,表示要建立的文件是ASCII文件还是Unicode文件,该参数可以省略,缺省时为 False,即为 ASCII 文件。

⑵ 打开已存在的文件

  打开已存在文件的方法的具体格式为(以AFileSystemObject为例):
  
CODE
AFilesystemObject.OpenTextFile(FileName, IOMode, create, format)

其中:
  FileName 是一个string值,指定要打开的文件的名称,通常为文件的实际路径加文件名称,C:\filepath\test.txt 。

  IOMode 是常数值,表示打开文件的目的,ForReading(1)表示用于读取数据;ForAppending 表示用于增加数据.该参数可以省略,缺省时为 ForReading。

  Create 是一个Boolean值,表示要打开的文件不存在时是否创建新文件,
该参数可以省略,缺省时为False,即不创建新文件。

  Format 表示文件打开的方式.其可能的值及含义如下:
TristateTrue:以 Unicode 的方式打开.
TristateFalse:以 ASCII 的方式打开.
TristateUseDefault:以系统默认的方式打开.

该参数可以省略,缺省时为 TristateFalse ,即ASCII方式。

(二).用 TextStream 进行文件操作

  在建立或打开了文件之后,就可利用对象 TextStream 提供的方法进行文件的实际操作了。

  1.用于写操作的方法有:

⑴ Write(string)
  将由 string 指定的字符串写入到文件中。

⑵ WriteLine(string)
  在文件中写入由 string 指定的字符串,并写入一个换行字符。
  参数string 可以省略,此时将在文件中插入一个空行。

⑶ WriteBlankLines(NumOfLines)
  在文件中插入若干空行,行数由 NumOfLines 指定。

  2.用于读操作的方法和属性方法有:

⑴ AtEndOfLine
  该属性是一个 Boolean 值,表示文件指针是否已指向当前行的行尾。

⑵ AtEndOfStream
  该属性是一个 Boolean 值,表示文件指针是否已指向文件尾。

⑶ Column
  该属性是一个整数值,表示文件指针在当前行中的位置。

⑷ Line
  该属性是一个整数值,表示文件指针所在行的行号。

⑸ Read(NumOfCharacters)
  该方法从文件当前位置开始,读入由NumOfCharacters数目指定的若干字符,返回一个字符串。

⑹ ReadLine
  该方法从文件当前位置开始,读入当前行的内容直到行尾,返回一个字符串。

⑺ ReadAll
  该方法从当前位置开始,读入整个文件的内容直到文件结束,返回一个字符串。

⑻ Skip(NumOfCharacters)
  该方法从文件当前位置开始,跳过由NumOfCharacters数目指定的若干字符。

⑼ SKipLine
  该方法从文件当前位置开始,跳过当前行的内容。

  3.用于关闭文件的方法有:

⑴ Close
  关闭已经建立或打开的文件。

(三)、下面就以一个实例来说明如何使用FSO来读取文本文件和如何保存到数据库:

1、 先创建一个读取文件路径的页面:file.htm
CODE

<FORM METHOD=POST ACTION="upFile.asp" >
       <div align="center"> <br>
       <br>
       <br>
       <br>
       <input type="file" name="path" size="40">
       <INPUT TYPE="submit" name="dr" value="导入信息">
       </div>
</FORM>


2、 编写把获取到的文本值保存到数据库代码:upFile.asp
CODE
<%@Language="VBScript"%>
<%Response.Buffer=true%>
<!--#include file="adovbs.inc"-->
<%
strConn = "DSN=DataSourceName"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open strConn
Set ObjComm = Server.CreateObject("ADODB.Command")
ObjComm.CommandText = "sp_AddMsg"         ‘调用存储过程
ObjComm.CommandType = adCmdStoredProc
Set ObjComm.ActiveConnection = Conn

''''''''''创建输入输出参数'''''''''''''''''
Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)
     ObjComm.Parameters.Append ObjParamECom
     '@in_ECompanyName      Varchar(50),                   --公司英文名称

Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)
     ObjComm.Parameters.Append ObjParamAddr
     '@in_Address      Varchar(50),                   --公司地址

Set ObjParamCity=ObjComm.CreateParameter("WC_City",adVarchar,adParamInput,100)
     ObjComm.Parameters.Append ObjParamCity
     '@in_City     Varchar(50),                   --城市

''''''''''创建参数完毕''''''''''''''''''''
%>
<%
Dim AllText, strLine1, strLine2, strLine3
Dim strpath, fileurl

fileurl = ""

strpath=Trim(Request.form("path"))

fileurl=strpath

Set FSO = CreateObject("Scripting.FileSystemObject")

Set ATextStream = FSO.OpenTextFile(fileurl, 1, false, TristateFalse)

'''''''''提取数据''''''''''''''''''''''''''''
Do While Not ATextStream.AtEndOfStream

''''''初始化变量''''''''''''''''
strLine1 = ""
strLine2 = ""
strLine3 = ""

'''''''''''''''''''''''''''''''
  ATextStream.SkipLine
  ATextStream.Skip(11)
  strLine1 = Trim(ATextStream.ReadLine)
  ATextStream.Skip(11)
  strLine2 = Trim(ATextStream.ReadLine)
  ATextStream.Skip(5)
  strLine3 = Trim(ATextStream.ReadLine)
  …
'End if

''''''''''将变量加入参数集'''''''''''''
ObjParamECom.Value = strLine1
ObjParamCCom.Value = strLine2
ObjParamAddr.Value = strLine3


''''''''''操作结束''''''''''''''''''''

ObjComm.Execute() '运行命令

Loop

Response.Write("<br>" & "导入库成功!<a href=dolist.html>[继续导入]</a><br>")

Set Conn = Nothing
Set FSO = Nothing
Set ATextStream = Nothing
%>


附:存储过程sp_AddMsg代码
CODE
CREATE PROCEDURE dbo.sp_AddMsg                 --导入国外企业信息
(

  @in_CompanyName       Varchar(100),               --公司名称
  @in_Address          Varchar(200),                 --公司地址
  @in_City           Varchar(100),              --公司所在城市
  …
)
AS
SET NOCOUNT ON
      BEGIN TRAN
           INSERT INTO Tb_WCLibrary(
                            WC_CompanyName,
                            WC_CCompanyName,
                            WC_Address,
                            …
                               )
              VALUES(
                         @in_CompanyName,
                         @in_CCompanyName,
                         @in_Address,
                         …
                          )
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN -1
END

COMMIT TRAN

RETURN 0

SET NOCOUNT OFF


至此,全文内容讲解结束,希望这篇文章能给读者带来一定的帮助。

作者:未知
来源:http://www.programfan.com/article/showarticle.asp?id=2328


--------------------
纯白色
云娜音乐
54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
不学无术
post Apr 3 2005, 06:19 AM
发表于: #4


论坛管理员
*********

用户组: 管理员
发表总数: 3,801
注册日期: 1-March 03
来自: 天地人间
会员编号: 24



ASP 中取得图片宽度和高度的类(无组件)

CODE
<%
Class ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
   Dim ASO
   Private Sub Class_Initialize
       Set ASO = Server.CreateObject("ADODB.Stream")
       ASO.Mode = 3
       ASO.Type = 1
       ASO.Open
   End Sub
   Private Sub Class_Terminate
       Err.Clear
       Set ASO = Nothing
   End Sub

   Private Function Bin2Str(Bin)
       Dim I, Str
       For I=1 To LenB(Bin)
           clow = MidB(Bin, I, 1)
           If ASCB(clow) < 128 Then
               Str = Str & Chr(ASCB(clow))
           Else
               I = I+1
               If I <= LenB(Bin) Then Str = Str & Chr(ASCW(MidB(Bin, I, 1)&clow))
           End If
       Next
       Bin2Str = Str
   End Function
     
   Private Function Num2Str(Num, Base, Lens)
       Dim Ret
       Ret = ""
       While(Num >= Base)
           Ret = (Num Mod Base) & Ret
           Num = (Num - Num Mod Base) / Base
       Wend
       Num2Str = Right(String(Lens,"0") & Num & Ret,Lens)
   End Function
     
   Private Function Str2Num(Str, Base)
       Dim Ret, I
       Ret = 0
       For I=1 To Len(Str)
           Ret = Ret * base + Cint(Mid(Str, I, 1))
       Next
       Str2Num = Ret
   End Function
     
   Private Function BinVal(Bin)
       Dim Ret, I
       Ret = 0
       For I = LenB(Bin) To 1 Step -1
           Ret = Ret * 256 + AscB(MidB(Bin, I, 1))
       Next
       BinVal = Ret
   End Function
     
   Private Function BinVal2(Bin)
       Dim Ret, I
       Ret = 0
       For I = 1 To LenB(Bin)
           Ret = Ret * 256 + AscB(MidB(Bin, I, 1))
       Next
       BinVal2 = Ret
   End Function
     
   Private Function GetImageSize(filespec)
       Dim bFlag
       Dim Ret(3)
       ASO.LoadFromFile(filespec)
       bFlag = ASO.Read(3)
       Select Case Hex(binVal(bFlag))
       Case "4E5089":
           ASO.Read(15)
           ret(0) = "PNG"
           ret(1) = BinVal2(ASO.Read(2))
           ASO.Read(2)
           ret(2) = BinVal2(ASO.Read(2))
       Case "464947":
           ASO.read(3)
           ret(0) = "gif"
           ret(1) = BinVal(ASO.Read(2))
           ret(2) = BinVal(ASO.Read(2))
       Case "535746":
           ASO.read(5)
           binData = ASO.Read(1)
           sConv = Num2Str(ascb(binData), 2 , 8)
           nBits = Str2Num(left(sConv, 5), 2)
           sConv = mid(sConv, 6)
           While(len(sConv) < nBits * 4)
               binData = ASO.Read(1)
               sConv = sConv&Num2Str(AscB(binData), 2 , 8)
           Wend
           ret(0) = "SWF"
           ret(1) = Int(Abs(Str2Num(Mid(sConv, 1 * nBits+1, nBits), 2) - Str2Num(Mid(sConv, 0 * nBits + 1, nBits), 2)) / 20)
           ret(2) = Int(Abs(Str2Num(Mid(sConv, 3 * nBits + 1, nBits), 2) - Str2Num(Mid(sConv, 2 * nBits + 1, nBits), 2)) / 20)
       Case "FFD8FF":
           Do  
           Do : p1 = binVal(ASO.Read(1)) :  Loop While p1 = 255 And Not ASO.EOS
           If p1 > 191 And p1 < 196 Then Exit Do Else ASO.read(binval2(ASO.Read(2)) - 2)
           Do : p1 = binVal(ASO.Read(1)) : Loop While p1 < 255 And Not ASO.EOS
           Loop While True
           ASO.Read(3)
           ret(0) = "JPG"
           ret(2) = binval2(ASO.Read(2))
           ret(1) = binval2(ASO.Read(2))
       Case Else:
           If left(Bin2Str(bFlag), 2) = "BM" Then
               ASO.Read(15)
               ret(0) = "BMP"
               ret(1) = binval(ASO.Read(4))
               ret(2) = binval(ASO.Read(4))
           Else
               ret(0) = ""
           End If
       End Select
       ret(3) = "width = """ & ret(1) & """ height = """ & ret(2) & """"
       getimagesize=ret
   End Function
     
   Public Function imgW(IMGPath)
       Dim FSO,IMGFile,FileExt,Arr
       Set FSO = Server.CreateObject("Scripting.FileSystemObject")
       If (FSO.FileExists(IMGPath)) Then
           Set IMGFile = FSO.GetFile(IMGPath)
           FileExt = FSO.GetExtensionName(IMGPath)
           Select Case FileExt
               Case "gif", "bmp", "jpg", "png":
               Arr = GetImageSize(IMGFile.Path)
               imgW = Arr(1)
           End Select
           Set IMGFile = Nothing
       Else
           imgW = 0
       End If    
       Set FSO = Nothing
   End Function
   
   Public Function imgH(IMGPath)
       Dim FSO, IMGFile, FileExt, Arr
       Set FSO = server.CreateObject("Scripting.FileSystemObject")
       If (FSO.FileExists(IMGPath)) Then
           Set IMGFile = FSO.GetFile(IMGPath)
           FileExt = FSO.GetExtensionName(IMGPath)
           Select Case FileExt
               Case "gif", "bmp", "jpg", "png":
               Arr = getImageSize(IMGFile.Path)
               imgH = Arr(2)
           End Select
           Set IMGFile = Nothing
       Else
           imgH = 0
       End If    
       Set FSO = Nothing
   End Function
End Class

IMGPath = "Test.jpg"

Set PP = New ImgWHInfo  
W = PP.imgW(Server.Mappath(IMGPath))  
H = PP.imgH(Server.Mappath(IMGPath))
Set pp = Nothing

Response.Write("<img src='" & IMGPath & "' border=0><br>宽:" & W & ";高:" & H)
%>


作者:未知
来源:http://www.programfan.com/article/showarticle.asp?id=2664


--------------------
纯白色
云娜音乐
54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
不学无术
post Apr 3 2005, 06:29 AM
发表于: #5


论坛管理员
*********

用户组: 管理员
发表总数: 3,801
注册日期: 1-March 03
来自: 天地人间
会员编号: 24



使用 FSO 进行搜索

   建立搜索引擎的关键是递归。主要地,编写一段代码搜索目录下的文件,然后对所有的目录循环执行同样的代码。因为不能确定总共有多少个子目录,所以必须一遍又一遍地执行搜索代码,直到结束。递归调用非常好!

   下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。
CODE
Dim objFolder
Dim strSearchText
Dim objFSO

strSearchText = Request.Form("SearchText")    'The search string
'create the FSO and Folder objects
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath("/"))

Search objFolder


   上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下:
CODE
Function Search(objFolder)
 Dim objSubFolder

 'loop through every file in the current folder
 For Each objFile in objFolder.Files
   Set objTextStream = objFSO.OpenTextFile(objFile.Path,1) < -- For Reading
       'read the file‘s contents into a variable
       strFileContents = objTextStream.ReadAll

       'if the search string is in the file, then write a link
       'to the file

       If InStr(1, strFileContents, strSearchText, 1) Then
          Response.Write("< A HREF=""/" & objFile.Name & """>" & objFile.Name & "< /A>< BR>")
          bolFileFound = True
       End If

       objTextStream.Close
 Next

 'Here is the recursion part - for each
 'subfolder in this directory, run the Search function again

 For Each objSubFolder In objFolder.SubFolders
       Search objSubFolder
 Next

End Function


   为了能打开文件,FSO需要实际的文件路径,而不是web路径。比如,是c:\inetpub\wwwroot\empindex.htm,而不是 www.enfused.com/temp/index.html 或者 /temp/index.html。为了将后者转换为前者,使用 Server.MapPath("filename"),filename 表示 web 路径名。

   上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。

   注意,随着文件和子目录数量的增加,搜索花费的时间也将增加。如果需要繁重的搜索工作,建议你采取其他的方法,比如微软公司的索引服务器 Index Server。


欢迎大家访问我的个人网站 萌萌的IT人
posted on 2005-07-01 16:34 一天一点爱恋 阅读(381) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 一天一点爱恋 Powered by: 博客园 模板提供:沪江博客