科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科——欢迎光临全球最大的互联网博物馆
  • 人气指数: 4634 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2009-03-11
admin
admin
发短消息
相关词条
M2M
M2M
SPDY
SPDY
MOVE模式
MOVE模式
WebRTC
WebRTC
网页分类技术
网页分类技术
Li-Fi
Li-Fi
Teaser Page
Teaser Page
数字蚂蚁
数字蚂蚁
FOE
FOE
远程立体视频会议
远程立体视频会议
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
王健林电商梦
王健林电商梦
陌陌IPO
陌陌IPO
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

fso
fso
FSO(File System Object)是微软ASP的一个对文件操作的控件,该控件可以对服务器进行读取、新建、修改、删除目录以及文件的操作。是ASP编程中非常有用的一个控件。但是因为权限控制的问题,很多虚拟主机服务器的FSO反而成为这台服务器的一个公开的后门,因为客户可以在自己的ASP网页里面直接就对该控件编程,从而控制该服务器甚至删除服务器上的文件。因此不少业界的虚拟主机提供商都干脆关掉了这个控件,让客户少了很多灵活性。

目录

[显示全部]

基本简介编辑本段回目录

fso
fso
在ASP中,FSO的意思是File System Object,即文件系统对象。将要操纵的计算机文件系统,在这里是指位于web服务器之上。所以,确认你对此拥有合适的权限。理想情况下,你可以在自己的机器上建立一个web服务器,这样就能方便地进行测试。如果运行于Windows平台,请试一试微软公司的免费个人Web服务器PWS

FSO模型对象:

Drive Object:驱动器对象供存取磁盘或者网络驱动器;
File System Object Object:文件系统对象供存取计算机的文件系统;
Folder Object:文件夹对象供存取文件夹的所有属性;
Text Stream Object:文本流对象供存取文件内容。

可以使用上面的对象做计算机上的任何事情,也包括破坏活动。所以,请小心使用FSO。在web环境中,存储信息是非常重要的,比如用户信息,日志文件等。FSO提供了一个强大且简单的方法高效率地保存数据。在这篇文章里面,着重讨论File System Object和Text Stream对象。FSO由微软公司提供支持,对于非Windows系统,不能再使用ASP。

使用方法编辑本段回目录

为了使用FSO来执行所有的工作,首先要创建对象,代码就象下面这样:

fso

 

 


这样就建立了FSO并且赋予变量fso,接着就可以使用熟悉的object.method语法来执行文件系统的操作〔查看VisualBasic文档,获取更多的关于对象和对象向导编程的知识〕。在这里,可以使用fso.method或者fso.propert

fso
fso
y,这些将在下面的例子中看到。

FSO模型位于由微软提供的脚本运行时间DLL文件中,它是scrrun.dll。你可以在任何应用程序中引用这个DLL文件,比如MSAccess,Word。就是说,并非仅仅限制在ASP中应用它。

FSO方法一个简要的FSO方法列表:

Copy File拷贝一个或者多个文件到新路径;
Create Text File创建文件并且返回一个Text Stream对象;
Delete File删除一个文件;
Open Text File打开文件并且返回Text Stream对象,以便读取或者追加。如果想了解完整的FSO方法与属性,请查阅微软MSDN。

权限许可编辑本段回目录

fso
fso
FSO以创建它的用户帐户权限运行,换言之,如果有人从Internet上访问你的页面,那么这个internet帐户就创建FSO。如果以administrator的身份登录计算机,并且登录页面,那么administrator帐户就创建了FSO。这是非常重要的,因为一定的帐户拥有一定的权限,并且FSO需要一些权限从而能完整的执行功能。internet帐户(IUSER_Machine Name,Machine Name是服务器的名字)一般只拥有读权限,这意味着用户将不能写入留言簿文件。然而,有几个选择可以绕过这个问题。

首先,也是很困难的,是要求用户在填写留言簿前登录到服务器。然而,留言簿的要点是从匿名用户处收集信息,如果要求用户登录,就必须要知道他们是谁。因此,跳过这个选择,看下一个。

第2个方法是创建一个目录或者文件,IUSER_Machine Name用户对此有写权限。这样做可能开放了一些潜在的安全漏洞,因为任何知道正确目录并具备一定web技巧的人就能在服务器上填充内容。这是一个很严重的禁忌。所以你必须确认在隐藏的场所保存了这些可写目录的信息,并且尽可能地将这些目录设置在web目录结构以外(比如在Windows下,这是一个不在inetpub目录下的一个目录)。

文件读取编辑本段回目录

fso
fso
现在已经有了一些用户信息保存在文件中,就像一个简单的数据库。假设有一个用户想了解所有的访问者,就要从登记的信息中分离出相关部分,因为没有象数据库一样拥有结构化的列。在所创建的文件中,第1行是用户名,第2行是他们的主页,第3行是他们的电子邮件地址。随后登记的用户也是按照这样的结构存储他们的信息,所以每3行将包含一个用户的登记信息。知道了这些,就可以编写下面的代码来显示信息:

<%
  'createthefsoobject
  setfso=Server.Createobject("Scripting.FileSystemObject")
  path="c:empest.txt"
  'openthefile
  setfile=fso.opentextfile(path,1)<--For
  reading

接着,分析每一行,并且格式化数据:

dountilfile.AtEndOfStream
  Response.write("Name:"&file.ReadLine&"")
  Response.write("HomePage:"&file.ReadLine&"")
  Response.write("Email:"&file.ReadLine&"")
  loop
  'closeandcleanup
  file.close
  setfile=nothing
  setfso=nothing

%>

这里仅仅做了一个非常简单的输出,可以根据情况包含表格或者DHTML表单信息。如果已经正确地建立并写入了文件,上面的小小循环将合适地列出数据库中的每一个人的信息。ReadLine方法读取1行内容,直到遇到换行符,随后的Read Line调用将读取下一行。At End Of Stream是Text Stream对象的属性,何时遇到文件的尾部。假设由于某种原因,没有正确地形成文件,如果一个用户只有2行信息而不是3行,那么就会产生一些错误。这里的循环取回文件中的下3行信息,如果没有3行多的信息,就将出现如下的错误信息:Serverobjecterror'ASP0177:800a003e' 所以,一定要添加一些错误处理代码,以防文件中插入了多余的行或者少了必要的行信息。

文件写入编辑本段回目录

fso
fso
假设你想创建一个简单的留言簿,你可以建立一个数据库,在其中存储用户的信息。然而,如果并不需要数据库的强大功能,使用FSO来存储信息将节省你的时间和金钱。并且,一些ISP也许限制了web上的数据库应用。假设你在一个表单中收集了一些用户信息,这里是一个简单表单HTML代码:

fso

 

 

 

 

 

 

 

 

 

再看formhandler.asp中处理表单的代码:

<%
  'Getforminfo
  strName=Request.Form("username")
  strHomePage=Request.Form("homepage")
  strEmail=Request.Form("Email")
  'createthefsoobject
  Setfso=Server.CreateObject("Scripting.FileSystemObject")
迄今为止,还没有新鲜的东西,无非是获取表单域的值并且赋值到变量。下面出现了有趣的部分-写文件:
  path="c:empest.txt"
  ForReading=1,ForWriting=2,ForAppending=3
  'openthefile
  setfile=fso.opentextfile(path,ForAppending,TRUE)
  'writetheinfotothefile
  file.write(strName)&vbcrlf
  file.write(strHomePage)&vbcrlf
  file.write(strEmail)&vbcrlf
  'closeandcleanup
  file.close
  setfile=nothing
  setfso=nothing
OpenTextFile方法返回一个TextStream对象,它是FSO模型中的另外一个对象。TextStream对象揭示了操作文件内容的方法,比如写、读一行、跳过一行。VB常量vbcrlf产生一个换行符。在OpentextFile的命令参数中定义了TRUE,这就告诉了系统,如果文件不存在,就创建它。如果文件不存在,并且没有定义TRUE参数,就会出错。现在转到目录c:emp,打开test.txt,你可以看到如下的信息:
  User'sname
  User'shomepage
  User'semail
这些单词可以被输入在表单中的任何内容所替换。

搜索功能编辑本段回目录

fso
fso
建立搜索引擎的关键是递归。主要地,编写一段代码搜索目录下的文件,然后对所有的目录循环执行同样的代码。因为不能确定总共有多少个子目录,所以必须一遍又一遍地执行搜索代码,直到结束。递归调用非常好,下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。
  DimobjFolder
  DimstrSearchText
  DimobjFSO
  strSearchText=Request.Form("SearchText")"&objFile.Name&""
  bolFileFound=True
  EndIf
  objTextStream.Close
  Next
  'Here'stherecursionpart-foreach
  'subfolderinthisdirectory,runtheSearchfunctionagain
  ForEachobjSubFolderinobjFolder.SubFolders
  SearchobjSubFolder
  Next
  EndFunction

为了能打开文件,FSO需要实际的文件路径,而不是web路径。比如,是c:inetpubwwwrootempindex.html,而不是www.enfused.com/temp/index.html或者/temp/index.html。为了将后者转换为前者,使用Server.MapPath("filename"),filename表示web路径名。上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。注意,随着文件和子目录数量的增加,搜索花费的时间也将增加。如果需要繁重的搜索工作,建议你采取其他的方法,比如微软公司的索引服务器Index Server。

内容管理编辑本段回目录

fso
fso
对文件改名。为了跟踪所有的文档,你将要重新命名它们以便唯一,这样就可以被系统容易地区别。很不幸,FSO不允许简单的文件改名操作,所以不得不修改一下。

<%
  'createthefsoobject
  setfso=Server.Createobject("Scripting.FileSystemObject")
  path="c:empest.txt"
  strDate=Replace(Date(),"/","")
  strDir="c:inetpubwwwrootarticles"&strDate
  strNewFileName=Hour(Now)&"_"&Minute(Now)&"_"&
  second(Now)&".html"
  'opentheoldfile
  setfile=fso.opentextfile(path,1)<--Forreading
  strText=file.readall
  setfile=nothing
  'checkforand/orcreatefolder
  ifnotfso.folderexists(Server.MapPath(strDir))then
  setf=fso.CreateFolder(Server.MapPath(strDir))
  else
  setf=fso.GetFolder(Server.MapPath(strDir))
  endif
  'createandwritenewfile
  setfile=fso.Createtextfile(f.path&""&strNewFileName)
  file.write(strText)
  setf=nothing
  file.close
  setfile=nothing
  'deletetheoldfile
  fso.DeleteFile(path&""&rst("FileName")&i)
  'cleanup
  setfso=nothing
fso

 

FSO能力的不足在这里却成了优势,可以一次执行2步。首先,打开文件并读入文件的内容。假设这里要创建一个唯一的文件夹和一个唯一的文件来存储文章。然而,因为文件夹的路径每天都将改变,所以必须首先检查是否文件夹已经存在,如果不存在,就创建它。这在ifnotfso.folderexists代码段完成。然后,取得那个路径,创建一个新的文件。新文件建立完成后,删除掉旧文件,这通过fso.DeleteFile来完成。

这2步就是:对文件改名,然后移动到一个更合适的目录下。注意,在这里还可以对文件进行更多地操作,比如在写入新文件前进行一下内容的编辑。

FSO确实存在一些弱点-比如,它很难处理二进制文件,这包括Word文档、许多图形格式的文件和其他一些文件。然而你仍然可以用其他的方式操作这些文件-移动它们、删除它们,等等。你不能做的就是对它们进行打开或者写操作。另外一个限制是对于文件长度的问题。当立刻读写一些内容时,所有的信息都存储在内存中-内容越多,消耗的内存就越大。这将使每个工作都变得慢起来。所以,如果需要操作非常大的文件,或者大量的小文件时,考虑将文件分割成小块,并且经常的清除内存。

将应用程序融入进COM对象组件,也能大大地提高程序的速度。同样,你也不能使用FSO来管理权限以及文件、文件夹的属性,执行安全加密的一个很好方法就是将前面提到的留言簿文件设置为只读,在需要时再设置为可写,然后再修改回来。这个方法经常在CGI和Perl使用,但是很不幸,还没有令人满意的方法来用FSO实现。

相关词条编辑本段回目录

参考资料编辑本段回目录

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: FSO

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。