• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > 奇妙的文件系统对象组件

奇妙的文件系统对象组件

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了组件对象模型,com组件对象模型,面向对象的组件技术,对象与组件,分布式组件对象模型等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
翻译 讨饭猫

很久以前(其实就几个月)就知道 Chinaasp 有个实际效果象黑客的ASE程序,最近 Chinaasp 又提供了精华区全文检索功能。看来文件系统对象组件还是很有用的,对吧?如果你对此有兴趣,可以看看这篇文章。本文属入门级,修行还靠你自己,呵呵。

注意:我们在下文中要操作的是Web服务器的文件系统,所以首先要确定你对该服务器有足够的权限。如果你不想麻烦你的Web Master,你也可以用微软的Personal Web Server来进行你的试验。

FSO对象包括
驱动器对象(Drive Object)用来存取本地盘或网络盘,
文件系统对象(FielSystemObject 简称FSO)是用来存取文件系统
文件夹对象(Folder Object)用于存取文件夹的各种属性
文本流对象(TextStream Object 简称TS)存取文件内容

使用以上对象,你的确可以在一台电脑上为所欲为,但同样也可能会造成灾难,所以在使用FSO的时候要注意安全,特别是在Web应用中,Web服务器中会存储诸如用户信息,日志文件等等重要信息,更要格外小心。在本文中,我们主要探讨FSO对象和TextStream对象

(FSO由Microsoft提供,所以本文内容只适用于Windows操作系统下的ASP编程。)



如何使用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,而又不想用复杂的数据库,或者你的ISP限制你用数据库,大可以用FSO来干。
假设你要从用户提交的form中收集信息,html这样写.

<html>
<body>
<form action="formhandler.asp" method="post">
<input type="text" size="10" name="username">
<input type="text" size="10" name="homepage">
<input type="text" size="10" name="Email">
</form>
</body>
</html>

再看看用于处理这个form的formhandler.asp。

<%
' 获取 form信息
strName = Request.Form("username")
strHomePage = Request.Form("homepage")
strEmail = Request.Form("Email")

' 建立fso对象
Set fso = Server.CreateObject("Scripting.FileSystemObject")

path = "c:\temp\test.txt"
ForReading = 1, ForWriting = 2, ForAppending = 3

' 打开文件
set file = fso.opentextfile(path, ForAppending, TRUE)

' 把信息写入文件
file.write(strName) & vbcrlf
file.write(strHomePage) & vbcrlf
file.write(strEmail) & vbcrlf

' 关闭并清除对象
file.close
set file = nothing
set fso = nothing

看看上面,OpenTextFile方法返回了一个TS对象,TS对象提供了例如Write,ReadLine,SkipLine等一系列的方法来操作文件内容。VB常量vbcrlf是换行符。

(我们在OpentextFile方法中指定了TRUE参数,通知系统当文件不存在时生成一个新文件。如果不用TRUE,当文件不存在时就会返回一个难看的错误提示。)

现在打开c:\temp\test.txt,你可以看到如下信息:

User's name
User's home page
User's email

当然,实际内容是用户的输入。哈,一个简单的guestbook诞生啦。



读文件

好,现在我们的guestbook里已经存储了不少用户的信息了,如果这时一个用户想看看我们访客的信息,我们得把信息再还原出来。由于不是数据库,得自己动手来解决分段问题。看看test.txt,每三行就是一个用户的信息,好办:

<%
' 建立fso对象
set fso = Server.Createobject("Scripting.FileSystemObject")
path = "c:\temp\test.txt"

'打开文件
set file = fso.opentextfile(path, 1) <-- 用于读

do until file.AtEndOfStream
Response.write("Name: " & file.ReadLine & " ")
Response.write("Home Page: " & file.ReadLine & " ")
Response.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服务器上的文件。

那么先让我们来试试文
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 奇妙的文件系统对象组件

相关文章

  • 2017-05-11JavaScript实现带自动提示的文本框效果代码
  • 2017-05-11用正则和xmlHttp实现的asp小偷程序
  • 2017-05-11ASP开发准则是什么
  • 2017-05-11asp中用for循环的一个小技巧
  • 2017-05-11asp实现计算两个时间内的工作日的函数
  • 2017-05-11用asp实现访问远程计算机上MDB access数据库文件的方法
  • 2017-05-11SQL SERVER编写存储过程小工具
  • 2017-05-11什么是ASP?如何打开ASP文件
  • 2017-05-11asp读取excel表名的实现代码
  • 2017-05-11asp 删除数据并同时删除图片的代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP上传漏洞之利用CHR(0)绕过扩展名检测脚本
    • ASP Err.Number 错误描述详解
    • asp自动补全html标签自动闭合(正则表达式)
    • asp下利用fso实现文件夹或文件移动改名等操作函数
    • 隐藏ASP木马后门的两种方法
    • 使用类,实现模块化
    • TSYS 新闻列表JS调用下载
    • 把无限级分类生成数组
    • 图片自动保存到本地并利用aspjpeg为图片加水印
    • ASP 中 Split 函数的实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有