TAREA>控件里的文本以后),将把<TEXTAREA>控件里的内容重新写入到该文本文件内。为此,该页有相应的一些ASP代码,在创建HTML控件以前检验Request.Form集合,查看点击的是哪一个按钮(如果有的话),然后就重新载入该页。
如果点击Update按钮,搜集<TEXTAREA>控件的内容作为一个字符串,分离这个字符串使之成为独立文本选择的数组,并且打开文本文件准备重写其内容,然后遍历刚刚创建的数组,按行号循环写入该行的内容:
…
'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdUpdate")) Then
'Get contents of TEXTAREA control
strNewText = Request.Form("txtContent")
'Split it into an array of lines at each carriage return
arrLines = Split(strNewText, vbCrLf)
'Open the text file for writing, which replaces all existing content
Set objTStream = objFSO.OpenTextFile(strTextFile, ForWriting)
For intLine = 0 To UBound(arrLines)
strThisLine = arrLines(intLine)
'Write out each line in turn as long as it’s got a line number
If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)
Next
objTStream.Close
End If
…
HTML<TEXTAREA>控件可在返回的Value中增加额外字符,这依赖于原始HTML页内的内容格式和WRAP属性的设置。特别是应在ASP脚本结束定界符“%>”后立即写上</TEXTAREA>标记,以防止增加一个额外的回车符号。即使用:
%></TEXTAREA><p>
而不使用:
%>
</TEXTAREA><P>
3. 向文本文件追加内容
当点击Append按钮时,可对已有的文件追加内容,与修改该文件内容类似,如图5-16所示。区别是打开该文件是为了追加而不是为了改写文件。调用OpenTextFile方法时可增加额外参数,防止在指定的文件2不存在时创建新文件。
…
If Len(Request.Form("cmdAppend")) Then
'append contents of TEXTAREA to file
strNewText = Request.Form("txtContent")
arrLines = Split(strNewText, vbCrLf)
Set objTStream = objFSO.OpenTextFile(strTextFile, ForAppending, False)
For intLine = 0 To UBound(arrLines)
strThisLine = arrLines(intLine)
If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)
Next
objTStream.Close
End If
…
图5-16 向文本文件追加内容时的示例页面
4. 重写缺省内容
最后,Restore按钮用来将初始缺省内容简单地重写回文本文件。代码与用TextStream的方法写一个文本文件类似:
…
If Len(Request.Form("cmdDefault")) Then
'write out default contents to file
Set objTStream = objFSO.CreateTextFile(strTextFile, True, False)
objTStream.WriteLine "At last I can create files with VBScript!"
objTStream.WriteLine
objTStream.WriteLine "Here are three blank lines:"
objTStream.WriteBlankLines 3
objTStream.Write "... and this is "
objTStream.WriteLine "the last line."
objTStream.Close
End If
5.6 小结
本章讲述了在ASP页面中使用对象和组件的强大能力。首先讨论对象和组件的一般特性,以及它们的类型。然后集中论述了如何在ASP(及客户端)脚本代码内创建对象实例。
在页面上使用的许多对象可能都是“外部”组件,这些组件安装在服务器上,独立于ASP。本章所讨论的对象,当ASP使用一种缺省的脚本语言(如VBScript或JScript)时,总是可用的。其实现是通过scrrun.dll文件里的脚本运行期库完成的。
这些对象是指Dictonary对象、FileSystemObject对象和TextStream对象。
Dictionary对象为我们提供了存储值的一种有效方式,可根据名字进行索引和访问,而不是根据一个数字进行访问。这是存储名字/值对这样的数据的理想方式。
FileSystemObject对象和TextStream对象相互之间联系密切,可使用它们访问服务器或网络(映射)的磁盘驱动器的目录。FileSystemObject对象提供对驱动器、文件夹(目录)和文件的存取,并提供了用于对于获得更多的信息或移动、复制、删除它们的属性及方法。
可以创建对应于系统内的任何文件的TextStream对象,并通过该对象对文件进行读取和写入。对于读写过程它作为文本文件操作,甚至可以处理Unicode格式的文件。对文件系统的导航和读写能力的结合允许对服务器文件系统进行极其复杂的控制。还可以在客户端脚本代码中使用对象(有一定限制)。
如果点击Update按钮,搜集<TEXTAREA>控件的内容作为一个字符串,分离这个字符串使之成为独立文本选择的数组,并且打开文本文件准备重写其内容,然后遍历刚刚创建的数组,按行号循环写入该行的内容:
…
'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdUpdate")) Then
'Get contents of TEXTAREA control
strNewText = Request.Form("txtContent")
'Split it into an array of lines at each carriage return
arrLines = Split(strNewText, vbCrLf)
'Open the text file for writing, which replaces all existing content
Set objTStream = objFSO.OpenTextFile(strTextFile, ForWriting)
For intLine = 0 To UBound(arrLines)
strThisLine = arrLines(intLine)
'Write out each line in turn as long as it’s got a line number
If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)
Next
objTStream.Close
End If
…
HTML<TEXTAREA>控件可在返回的Value中增加额外字符,这依赖于原始HTML页内的内容格式和WRAP属性的设置。特别是应在ASP脚本结束定界符“%>”后立即写上</TEXTAREA>标记,以防止增加一个额外的回车符号。即使用:
%></TEXTAREA><p>
而不使用:
%>
</TEXTAREA><P>
3. 向文本文件追加内容
当点击Append按钮时,可对已有的文件追加内容,与修改该文件内容类似,如图5-16所示。区别是打开该文件是为了追加而不是为了改写文件。调用OpenTextFile方法时可增加额外参数,防止在指定的文件2不存在时创建新文件。
…
If Len(Request.Form("cmdAppend")) Then
'append contents of TEXTAREA to file
strNewText = Request.Form("txtContent")
arrLines = Split(strNewText, vbCrLf)
Set objTStream = objFSO.OpenTextFile(strTextFile, ForAppending, False)
For intLine = 0 To UBound(arrLines)
strThisLine = arrLines(intLine)
If Len(strThisLine) > 4 Then objTStream.WriteLine Mid(strThisLine, 6)
Next
objTStream.Close
End If
…
图5-16 向文本文件追加内容时的示例页面
4. 重写缺省内容
最后,Restore按钮用来将初始缺省内容简单地重写回文本文件。代码与用TextStream的方法写一个文本文件类似:
…
If Len(Request.Form("cmdDefault")) Then
'write out default contents to file
Set objTStream = objFSO.CreateTextFile(strTextFile, True, False)
objTStream.WriteLine "At last I can create files with VBScript!"
objTStream.WriteLine
objTStream.WriteLine "Here are three blank lines:"
objTStream.WriteBlankLines 3
objTStream.Write "... and this is "
objTStream.WriteLine "the last line."
objTStream.Close
End If
5.6 小结
本章讲述了在ASP页面中使用对象和组件的强大能力。首先讨论对象和组件的一般特性,以及它们的类型。然后集中论述了如何在ASP(及客户端)脚本代码内创建对象实例。
在页面上使用的许多对象可能都是“外部”组件,这些组件安装在服务器上,独立于ASP。本章所讨论的对象,当ASP使用一种缺省的脚本语言(如VBScript或JScript)时,总是可用的。其实现是通过scrrun.dll文件里的脚本运行期库完成的。
这些对象是指Dictonary对象、FileSystemObject对象和TextStream对象。
Dictionary对象为我们提供了存储值的一种有效方式,可根据名字进行索引和访问,而不是根据一个数字进行访问。这是存储名字/值对这样的数据的理想方式。
FileSystemObject对象和TextStream对象相互之间联系密切,可使用它们访问服务器或网络(映射)的磁盘驱动器的目录。FileSystemObject对象提供对驱动器、文件夹(目录)和文件的存取,并提供了用于对于获得更多的信息或移动、复制、删除它们的属性及方法。
可以创建对应于系统内的任何文件的TextStream对象,并通过该对象对文件进行读取和写入。对于读写过程它作为文本文件操作,甚至可以处理Unicode格式的文件。对文件系统的导航和读写能力的结合允许对服务器文件系统进行极其复杂的控制。还可以在客户端脚本代码中使用对象(有一定限制)。