精灵巫婆 发表于 2015-2-3 23:30:16

ASP网页设计FSO组件之文件操作

专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。fso   FSO中除可以对驱动器、文件夹的操作之外,功效最壮大的就是对文件的操作了。它可以用来记数、内容办理、搜刮还可生成静态HTML页面等等。 <P>  1、fso.OpenTextFile
  无需多说,fso.OpenTextFile就是翻开某个文件了,普通情形之下是翻开的txt文本文件。所以起首咱们先创立一个txt文件,然后经由过程FSO来读取个中的内容。 <P>  1,info.txt <P class=code>
name:cnbruce
sex:male
<P>  创立了该文件,上面再做个ASP页面,固然最好两个文件是在统一目次下。 <P>  2,opentxt.asp

<%
whichfile=server.mappath("info.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.OpenTextFile(whichfile,1)
rline = txt.ReadLine
rline = rline & "<br>" & txt.ReadLine
Response.Write rline
txt.Close
%>
<P>  需求注重:不管是经由过程FSO翻开驱动器、翻开文件夹、翻开文件,和今后要接触到的翻开<P>数据库,都只能是翻开相对物理途径地址。但普通情形是上传到空间办事商那,不克不及很直接地<P>懂得到本人文件的地点地位,所以激烈保举利用server.mappath办法:平台移植性强,合用<P>性强。 <P>  CreateObject("Scripting.FileSystemObject")创立了FSO组件的毗连,<P>fso.OpenTextFile(whichfile,1)翻开了info.txt该文件。参数“1”暗示<P>“ForReading:以只读体例翻开文件。不克不及写这个文件。”,其他还有参数<P>“2”暗示“ForWriting:以写体例翻开文件”,参数“8”暗示“ForAppending:<P>翻开文件并从文件末尾入手下手写”。 <P>  翻开了该文件,接上去是否是要显示文件中的内容?那就经由过程txt.ReadLine<P>办法读取文本中的一整行,假如需求持续读取下一行,则持续利用txt.ReadLine<P>办法。固然初此还有其它的读取办法,好比txt.Read(7)读取指定命量的字符,<P>txt.ReadAll前往文本中的全体内容。 <P>  2、fso.CreateTextFile
  如fso.CreateFolder创立文件夹般,fso.CreateTextFile则是创立文件了。 <P>  3,creattxt.asp <P class=code>
<%
whichfile=server.mappath("info.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(whichfile,True)
MyFile.WriteLine("My Name Is CN-Bruce")
MyFile.WriteLine("My Sex Is Male")
MyFile.Close
%>
<a href="opentxt.asp">检查内容</a>
<P>  本次创立的文件是上一info.txt文件,fso.CreateTextFile(whichfile,True)<P>个中的参数true即暗示能掩盖已有文件。创立后需求向外面添加数据就采取<P>“MyFile.WriteLine”了。 <P>  那如今就能够创立一个复杂的文本记髁耍辜堑靡郧暗募鞘浚?,<P>经由过程application、session、global.asa停止记数;2,经由过程Counter组件停止记数。<P>但二者都有通病,就是不克不及保留,假如办事重视新启动后,是否是一切记数全体清空了呢:)<P>那如今就能够利用文原本纪录数据了,即便重启,下次提取的也仍是该文件。 <P>  实验:文本计数器 <P>  起首创立一记数的文本文件counter.txt,设定初始值为“1” <P>  4,counter.txt <P class=code>
1
<P>  接着是记数的ASP文件,功效是显示文本的记数,本做加1的记数,<P>然后还要将新的记数写入文本文件。 <P>  5,txtcount.asp <P class=code>
<%
whichfile=server.mappath("counter.txt")
'翻开文件并将其值读取,最初封闭毗连释放资本
set fso=createobject("Scripting.FileSystemObject")
set openfile=fso.opentextfile(whichfile,1)
visitors=openfile.readline
openfile.close
'页面显示记数内容并做加1运算
response.write "您是本页的第"&visitors&"位访客"
visitors=visitors+1
'将新的数值添加写入到文本,最初封闭一切毗连释放资本
set creatfile=fso.createtextfile(whichfile)
creatfile.writeLine(visitors)
creatfile.close
set fso=nothing
%>
  那依据这个可以持续地扩大内容:好比让记数用数字图片显示。
固然条件就是你需求0-9的10张记数图片,并将此图片放于img文件夹中。
  下为一加强的txtcount.asp内容代码。
<P class=code>
<%
whichfile=server.mappath("counter.txt")<P>set fso=createobject("Scripting.FileSystemObject")
set openfile=fso.opentextfile(whichfile,1)
visitors=openfile.readline
openfile.close
CountLen=len(visitors)
response.write "您是本页的第"<P>for i=1 to 6-countLen '暗示最大值999999
response.write "<img src=http://www.webjx.com/htmldata/2005-05-17/img/0.gif></img>"
next
for i=1 to countlen
response.write "<img src=img/" & mid(visitors,i,1) & ".gif></img>"
next
response.write "位访客"visitors=visitors+1
set creatfile=fso.createtextfile(whichfile)
creatfile.writeLine(visitors)
creatfile.close
set fso=nothing
%>

<P>  本法式中采取的是mid函数,该函数的感化是前往某字符串中从第几位<P>字符入手下手的几个字符。格局即为:Mid(string,start,length) <P class=code>
<script language=vbs>
cn_string= "cnbruce love cnrose"
cn_start = 9
cn_length = 4
alert (mid(cn_string,cn_start,cn_length))
</script>学会了FSO提取文件值,也学会了将信息输出到文件中,那上面就再来使用使用下。 <P>  不晓得你有无如许的习气:看到一个文件,不盲目的右键选择用记事本翻开。<P>呵呵,几近没有哪一个文件是不成以的。所以如今,可以默许一切文件都是文本,<P>只是后缀名分歧罢了;那末也就是说,如今可以提取任一文件的内容信息。OK,就来想象一下: <P>  1,提取一个文件的途径(采取file按钮停止查找定位)
  2,将该途径文件翻开,并读取一切行
  3,显示读取的信息 <P>  1、viewcode.asp <P class=code>
<%
Function ShowCode(filename)
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set cnrs = fso.OpenTextFile(filename, 1)
While Not cnrs.AtEndOfStream
rsline = cnrs.ReadLine
rsline = server.HTMLEncode(rsline)
Response.Write(rsline & "<br>")
Wend
end Function
%><P><form action="viewcode.asp" method="post">
输出文件名<input type="file" name="filename">
<input type="submit" value="检查源法式">
</form><%
file=request.form("filename")
response.write (file & "源法式以下<hr>")
If trim(file)<> "" then
Call ShowCode(file)
End If
%>

<P>  以上法式调试时,可以选择html,asp页面,也能够翻开任一使用法式等。 <P>  界说的ShowCode函数,次要感化是翻开、读取并显示文件中一切信息内容。<P>注重添加了server.HTMLEncode(rsline),针对含有尺度HTML代码的文件。 <P>  显示文件中一切行即用一前提轮回停止遍历显示了。 <P class=code>
While Not cnrs.AtEndOfStream
...
Wend
<P>  接着,上面的这个例题详细就触及open办法的成绩了,还记得?正常情形之<P>下翻开文件是采取fso.OpenTextFile("c:\testfile.txt",1),参数1的感化是:<P>以只读形式翻开文件。不克不及对此文件停止写操作。假如如今已存在一文件,<P>需求停止追加写入,则该怎样办呢?复杂,参数为8便可。 <P>  这有甚么用呢?呵呵,亚玛逊的收集故事接龙就是如斯:能接龙就需求起首<P>要显示原有故事,然后本人添加故事写入文件。这个中的写入文件最考究的就是<P>追加写入了。所以上面就能够完成。 <P>  2、story.asp <P>
<%
If not request.Form("NextLine")="" then
Set fso=Server.CreateObject("Scripting.FileSystemobject")
textfile1=Server.MapPath("story.txt")
set cnrs=fso.OpenTextFile(textfile1,8)
cnrs.WriteLine(Request.Form("NextLine"))
cnrs.Close
end if
%>
故事以下:
<%
Set fso=Server.CreateObject("Scripting.FileSystemObject")
textfile1=Server.MapPath("story.txt")
set cnrs=fso.OpenTextFile(textfile1,1)
while not cnrs.AtEndOfStream
Response.Write " " & cnrs.ReadLine
wend
cnrs.close
%>
<hr>
<form method="post" action="story.asp">
请输出这个故事的新行:<input name="NextLine" type="text" size="70">
<input type="submit" value="提交">
</form>
<P>  全部就是一很复杂的读守信息和到场信息的夹杂使用,信任有了后面的基本<P>看懂应当不成成绩。固然还短少个story.txt文件,外面写好故事开首就能够了。 <P>  调试<P>  再上面,持续来,该偏重点次要就是实习一些函数的利用技能了。 <P>  1,instr函数:前往某字符串在另外一字符串中第一次呈现的地位。
  好比如今查找字母“A”在字符串“A110B121C119D1861”中第一次呈现的地位,则可以 <P class=code>
<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
alert(a_num)
</script>
  一样字母“B”的地位也就可以肯定。如今就来最关头的:提早字母“A”和“B”
两头的值“110”。还记得mid函数吗?mid函数的次要感化是:从字符串中前往指定命目标字符。
  好比如今的“110”则应当是从字符串的第2位获得3个单元的值。
<P class=code>
<script language=vbs>
my_string = "A110B121C119D1861"
a_value = mid(my_string,2,3)
alert(a_value)
</script>
  但假想一下:假如不是“110”,而是“1100”,那是否是要提取4位……如许就
显出法式的不敷完善。
  所以持续思虑:所提取的值,永久是在字母“A”前面的,且值也永久是在字母
“A”和“B”之间的,
那末只需分离提掏出“A”、“B”的地位,则两头数值的肇端位应是字母“A”位+1,
两头数值的长度应
是字母“B”位-字母“A”位-1
  那末如今就能够让法式完善起来:
<P class=code>
<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
b_num = instr(my_string,"B")
a_value = mid(my_string,a_num+1,b_num-a_num-1)
alert(a_value)
</script>
  OK,那末如今你也就完整可以把字母“B”、“C”、“D”前面的值逐一提取了。
  固然需求注重的就是“D”前面有几位怎样取呢?采取字符串总长度-字母D地点
地位数就能够了。
<P class=code>
<script language=vbs>
my_string = "A110B121C119D1861"
a_num = instr(my_string,"A")
b_num = instr(my_string,"B")
c_num = instr(my_string,"C")
d_num = instr(my_string,"D")
total_num = len(my_string)
a_value = mid(my_string,a_num+1,b_num-a_num-1)
b_value = mid(my_string,b_num+1,c_num-b_num-1)
c_value = mid(my_string,c_num+1,d_num-c_num-1)
d_value = mid(my_string,d_num+1,total_num-d_num)
alert(a_value)
alert(b_value)
alert(c_value)
alert(d_value)
</script>
  用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作
里有甚么感化呢?
  那上面才是咱们的正题:用FSO停止复杂的文本投票。
<P>  投票页面重要的就是显示各类项目标投票数,并响应赋于某个变量。然后<P>判别本次投票的选相,<P>绝对应地将投票数值加1,终了后再将一切值持续写入文本。 <P>  1,一个HTML表单页website.html
  以做投票点击的平台。 用到如今,你或许的确学到了很多,但或许会提出疑问:这个放在FSO文件操作里
有甚么感化呢?
那上面才是咱们的正题:用FSO停止复杂的文本投票。
<P class=code>
<form action="result.asp" method="post">
<input type="radio" name="website" value="A" checked> cnbruce.com<br>
<input type="radio" name="website" value="B"> blueidea.com<br>
<input type="radio" name="website" value="C"> it365cn.com<br>
<input type="radio" name="website" value="D"> 5d.cn<br>
<input type="submit">
<input type="reset">
<P>  2,承受表单页值的result.asp <P class=code>
<%
whichfile=server.mappath("site.txt")
set fso=createobject("Scripting.FileSystemObject")
set thisfile=fso.opentextfile(whichfile)
my_string=thisfile.readline<P>a_num = instr(my_string,"A")
b_num = instr(my_string,"B")
c_num = instr(my_string,"C")
d_num = instr(my_string,"D")
total_num = len(my_string)<P>a_value = mid(my_string,a_num+1,b_num-a_num-1)
b_value = mid(my_string,b_num+1,c_num-b_num-1)
c_value = mid(my_string,c_num+1,d_num-c_num-1)
d_value = mid(my_string,d_num+1,total_num-d_num)<P>select case request.form("website")
case "A": a_value=a_value+1
case "B": b_value=b_value+1
case "C": c_value=c_value+1
case "D": d_value=d_value+1
end selectmynew_string="A" & cstr(a_value) & "B" & cstr(b_value) & "C"
& cstr(c_value) & "D" & cstr(d_value)
set newfile=fso.createtextfile(whichfile)
newfile.writeLine(mynew_string)
newfile.close
set fso=nothing
%>
以后投票:<br>
cnbruce.com:<%=a_value%><br>
blueidea.com:<%=b_value%><br>
it356cn.com:<%=c_value%><br>
5d.cn:<%=d_value%><br>
<a href="website.html">前往持续</a>

<P>  有了下面函数的基本,看这个应当不是很难的。 <P>  3,最初不要忘了的记数文件site.txt <P>  格局:A1B1C1D1 <P>  调试   OK,三个文件就能够胜任一个很复杂的投票体系了,假如要增强,
需求细化的则联合之前的常识吧,好比投过一次后设置session或cookies,
当再次投票时分判别假如session或cookies存在则不答应,也就是复杂的投票防作
假手腕了……固然更多的仍是要本人去想去理论了。
一,fso.GetFile
  提取文件响应的 File 对象
<P>  1,getfile.asp <P class=code>
<%
whichfile=Server.MapPath("cnbruce.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile(whichfile,true)
f1.Write ("This is a test.My Name is cnbruce.")
f1.Close
Set f2 = fso.GetFile(whichfile)

s = "文件称号:" & f2.name & "<br>"
s = s & "文件短途径名:" & f2.shortPath & "<br>"
s = s & "文件物理地址:" & f2.Path & "<br>"
s = s & "文件属性:" & f2.Attributes & "<br>"
s = s & "文件巨细: " & f2.size & "<br>"
s = s & "文件类型: " & f2.type & "<br>"
s = s & "文件创立工夫: " & f2.DateCreated & "<br>"
s = s & "比来会见工夫: " & f2.DateLastAccessed & "<br>"
s = s & "比来修正工夫: " & f2.DateLastModified
response.write(s)
%>
<P>  其后果正如右键某文件,看到的详细属性信息。
  个中Attributes前往的数值“32”暗示:(Archive)前次备份后已更改的文件。可读写。 <P>  其它值附录以下: <P class=code>
Normal 0 通俗文件。 没有设置任何属性。
ReadOnly 1 只读文件。 可读写。
Hidden 2 埋没文件。 可读写。
System 4 体系文件。 可读写。
Directory 16 文件夹或目次。 只读。
Archive 32 前次备份后已更改的文件。 可读写。
Alias 1024 链接或快捷体例。 只读。
Compressed 2048 紧缩文件。 只读。
  二,file.move
  感化将指定的文件或文件夹从某地位挪动到另外一地位。其实该办法依然属于
fso.GetFile后的一个使用。
<P>  2,movefile.asp <P>
<%
whichfile=Server.MapPath("cnbruce.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile(whichfile,true)
f1.Write ("This is a test.My Name is cnbruce.")
f1.Close
Set f2 = fso.GetFile(whichfile)
f2.Move "C:\"
%>
<a href="C:\">检查下有无</a>
<P>
  复杂的剪切粘贴的功效完成。 <P>  三,File.Copy
  一样属于fso.GetFile后的一个使用。就只是纯真地拷贝文件到某地位。 <P>  3,copyfile.asp <P class=code>
<%
whichfile=Server.MapPath("cnbruce.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile(whichfile,true)
f1.Write ("This is a test.My Name is cnbruce.")
f1.Close
Set f2 = fso.GetFile(whichfile)
f2.Copy "D:\"
%>
<a href="D:\">检查下有无</a>
<P>  和本ASP页面同在目次下的cnbruce.txt文件仍然存在。 <P>  四,file.Delete
  很明显,就是直接删除文件了。 <P>  4,delfile.asp <P class=code>
<%
whichfile=Server.MapPath("cnbruce.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile(whichfile,true)
f1.Write ("This is a test.My Name is cnbruce.")
f1.Close
Set f2 = fso.GetFile(whichfile)
f2.move "d:\"
Set f3 = fso.GetFile("d:\cnbruce.txt")
f3.delete
%>
<a href="d:\">检查下是没有该文件的</a>
  固然FSO还没有停止,好比上传文件,ASP转HTML等都需求用到FSO。更出色的仍然是在前面。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。

飘灵儿 发表于 2015-2-4 00:04:46

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

第二个灵魂 发表于 2015-2-7 18:02:58

掌握asp的特性而且一定要知道为什么。

仓酷云 发表于 2015-2-22 20:11:45

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

柔情似水 发表于 2015-2-24 03:21:55

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

灵魂腐蚀 发表于 2015-2-27 21:01:12

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

深爱那片海 发表于 2015-3-1 21:31:36

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

admin 发表于 2015-3-6 17:14:49

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

小女巫 发表于 2015-3-13 04:31:29

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

透明 发表于 2015-3-13 22:35:10

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

分手快乐 发表于 2015-3-20 20:50:40

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

老尸 发表于 2015-4-7 01:38:58

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

再现理想 发表于 2015-5-2 05:28:17

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

冷月葬花魂 发表于 2015-7-3 01:14:19

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

再见西城 发表于 2015-7-4 03:47:33

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

因胸联盟 发表于 2015-7-6 00:30:01

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

金色的骷髅 发表于 2015-7-7 00:01:41

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

山那边是海 发表于 2015-7-9 22:26:05

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

飘飘悠悠 发表于 2015-7-12 19:54:05

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

愤怒的大鸟 发表于 2015-7-13 10:38:26

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页: [1]
查看完整版本: ASP网页设计FSO组件之文件操作