WEB开发技术 第四章
4.1文件存取组件与文件上传组件
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
本章内容与教学安排
理论,6学时
实验,6学时
4.1 文件存取组件与文件上传组件
4.2 Email组件与站点导航组件
4.3 其他组件与自编组件
课程引入与回顾
? Session 对象用于存储用户的信息。在整个
用户会话过程中,此信息都将保留。
? ASP 应用程序使用一个特殊的文件维护有
关该应用程序全局事件和对象的信息,该
特殊文件称为 Global.asa。
? Cookies 是一个很小的信息包,用于维护用
户计算机的状态信息。
目标
? 使用文件访问组件对文件系统进行操作
? 使用文件上传组件将浏览器方的文件上传
到 WEB服务器方
简介
? 使用服务器端组件,可以大大地扩展网络
服务器的功能。
? 服务器端组件中的一部分是由常规的
ASP/IIS安装程序提供的,而另一部分可以
从第三方获得。
? 本章主要介绍由 ASP/IIS提供的用于操作文
件系统的服务器端组件、文件上传组件、
email组件、文件超链接组件、广告处理组
件等。
4.1 文件存取组件
用来对 web服务器上的文件进行管理
File Access 组件 2-1
? 处理文件时可以使用文件访问组件( File
Access组件)。
? File Access组件用到下列对象:
– FileSystemObject:包含了处理文件系统的所
有基本方法。
– TextStream:用来读写文本文件。
– File:此对象的方法和属性用于处理单个文件 。
– Folder:此对象的方法和属性用于处理文件夹。
– Drive:表示磁盘驱动器或网络共享。
File Access 组件 2-2
? File Access组件有 3个集:
– Files集,代表在文件夹中的一系列文件。
– Folder集,代表在文件夹中的各子文件夹。
– Drive集,代表服务器上的驱动器或远程网络
共享。
FileSystemObject 对象
? ASP 提供了几个用于操纵驱动器、文件夹
和文件的对象。 FileSystemObject 对象用
于访问服务器上的文件系统。
? 此对象可操纵文件、文件夹和目录路径。
? 还可使用此对象来检索文件系统信息。
创建文本文件
<head><title>写文件 </title></head>
<body>
Writing file…
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.CreateTextFile(Server.MapPath("\chapter6\test.txt"))
for i=1 to 10
file1.WriteLine(CStr(i) & ",Hello There! ")
next
file1.close
%>
</body>
读取文本文件
<head><title>读文件 </title></head>
<body>
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.OpenTextFile(Server.MapPath("\chapter6\test.txt"),1,t
rue)
Do While not file1.AtEndOfStream
Response.Write file1.ReadLine & "<br>"
loop
file1.close
%>
</body>
向文件追加文本
<head><title>追加文件 </title></head>
<body>
追加数据 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.OpenTextFile(Server.MapPath("\chapter6\test.txt"),8,t
rue)
for i=100 to 102
file1.WriteLine(CStr(i) & ",追加的新行。 ")
next
file1.close
%>
</body>
复制文件
<head><title>复制文件 </title></head>
<body>
复制文件 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.CopyFile Server.MapPath("\chapter6\test.txt"),
Server.MapPath("\chapter5")&"\"
%>
</body>
? CopyFile方法可将一个或多个文件从一个位置复制
到另一个位置。语法为:
FileSystemObject.CopyFile source,destination[,overwrite]
移动文件
<head><title>移动文件 </title></head>
<body>
移动文件 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.MoveFile Server.MapPath("\chapter5\test.txt"),
Server.MapPath("\chapter4")&"\"
%>
</body>
? FileSystemObject 对象的 MoveFile 方法可将一个
或多个文件从一个位置移动到另一个位置。
FileSystemObject.MoveFile source,destination
删除文件
<head><title>删除文件 </title></head>
<body>
删除文件 ?
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.DeleteFile Server.MapPath("\chapter4\test.txt")
%>
</body>
? FileSystemObject 对象的 DeleteFile 方法可将一
个或多个文件删除。
FileSystemObject.DeleteFile(fileSpecifier)
检查文件是否存在
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
Response.write "<p>根目录下的 \chapter6\test.txt:"
If fs.FileExists(Server.MapPath("\chapter6\test.txt")) then
Response.write "存在该文件 "
Else
Response.write "不存在该文件 "
End if
Response.write "<p>根目录下的 \chapter5\test.txt:"
If fs.FileExists(Server.MapPath("\chapter5\test.txt")) then
Response.write "存在该文件 "
Else
Response.write "不存在该文件 "
End if
%>
驱动器和文件夹的操作
? FileSystemObject对象的 Drive集包含了服务器上
所有驱动器的集合。关于驱动器的
FileSystemObject对象的方法:
方法 描述
DriveExists(DriveSpecifier) 指定的驱动器是否存在。若返回值为 TRUE,
则表示指定的驱动器存在。
Drives 返回本机上的驱动器集合。
GetDrive(DriveSpecifier) 返回指定驱动器的 Drive对象。
GetDriveName(Path) 返回指定路径的驱动器的字符串。
Drive对象的一些属性
方法 描述
AvailableSpace 返回驱动器上的可用空间(字节数)。
DriveLetter 返回驱动器字母。
DriveType 返回对应于某种类型的驱动器的一个数字,
如光盘或可移动驱动器。
IsReady 表示该驱动器是否已经准备好待用
RootFolder 返回驱动器上根文件夹的 Folder对象。
SerialNumber 返回驱动器的序列号。
TotalSize 返回驱动器的大小(字节数)。
Drive对象的属性使用示例
<html>
<head><title>驱动器列表 </title></head>
<body>
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
for each thing in fs.Drives
response.write "<br>驱动器字母,"& thing.DriveLetter
response.write "<br>驱动器总字节数,"& thing.TotalSize
response.write "<br>驱动器可用空间,"& thing.AvailableSpace
response.write "<hr>"
next
%>
</body>
</html>
复制文件夹
<%
'将文件夹 NewFiles 从 C:\复制到文件夹 c:\Files目
录下
Set fs =
Server.CreateObject("Scripting.FileSystemO
bject")
fs.CopyFolder "C:\NewFiles","C:\Files\ "
%>
移动文件夹
<%
Set fs=
Server.CreateObject("Scripting.FileSystemObject")
fs.MoveFolder "c:\NewFiles","c:\VeryNewFiles\ "
%>
创建文件夹
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
fs.CreateFolder("c:\asp")
%>
检查文件夹是否存在
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
If fs.FolderExists("c:\asp")=true then
Response.Write(“文件夹 c:\asp 存在!” )
Else
Response.Write(“文件夹 c:\asp 不存在!” )
End if
%>
删除文件夹
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
If fs.FolderExists("c:\Files\NewFiles")
then
fs.DeleteFolder("c:\Files\NewFiles")
End if
%>
4.2 文件上传组件
将客户端的文件上传到服务器端
LyfUpload组件简介
? LyfUpload组件,是一个免费的组件,遵从 RFC-1867
HTTP标准,可以在 ASP页面中接收用户端使用
entype=“multipart/form-data”的 Form上传的文件。
LyfUpload组件 使用方法
? 先下载 lyfupload.dll外部组件
? 将它 (lyfupload.dll)放在 winnt/system32目录
? 然后注册,regsvr32 lyfupload.dll
? 就可以和其它组件一样使用了
? 语法
– Set 对象名 =Server.CreateObject(“LyfUpload.UploadFile”)
LyfUpload组件 常用属性
属 性 说 明
extname 限制上传文件的类型
语法:对象名,extname=“文件扩展名”
maxsize 限制上传文件的大小
语法:对象名,maxsize=大小
dbcontent 得到文件的实际内容,为二进制的信息,一般用
于写入数据库
filesize 得到上传文件的大小 (只读 )
LyfUpload组件 常用方法
方 法 说 明
Request 得到上一个页面表单上传的元素值
形式,request(string)
FileType 得到上传文件的 ContentType,即文件类型。
形式,filetype(strtag)
SaveFile 将上传的文件保存到指定目录,形式:
savefile(strtag,strpath,strway[,destfilenam
e])
savefiletodb 上传文件到数据库,形式:
Savefiletodb(strtag)
返回值与 savefile类似
savefile(strtag,strpath,strway[,destfilename])说明
? Strtag:为 Form中文件元素的名称,如 file1
? Strpath,为文件要在服务器上保存的目录
? Strway:覆盖方式,为 true,则永许覆盖
? Destfilename:指定保存后的文件名
? 返回值:
– 若 成功,返回的传的文件名,若失败,返回为空串,若上传文件
太大,返回为 0(设置了 maxsize),若上传文件类型不对,返回为
1(设置了 extname),若上传文件与现有文件重名,则返回为 2(设置
了 strway参数为 false)
文件上传示例 1
<form method="POST" enctype="multipart/form-data"
action="fileupload.asp">
<p>文本框 1,<input type="text" name="text1"
size="20"><br>
选择文件,<input type="file" name="file1"><br>
<input type="submit" value="上载 "
style="background-color,rgb(0,0,255); color,
rgb(255,255,0)"> </p>
</form>
? Enctype的缺省值为:,application/x-www-form-
urlencoded”
文件上传示例 2
? <%@Language=VBScript CODEPAGE=932 %>
? <HTML>
? <BODY>
? <%
? Set obj = Server.CreateObject("LyfUpload.UploadFile")
? txt = obj.request("text1") '得到 form元素的值
? Response.Write( "文本框输入值是,"&txt)
? Response.Write "<br>"
? ss=obj.SaveFile("file1","C:\temp",true) '保存文件到服务器
? aa=obj.filetype("file1")
? if ss<> "" then
? Response.Write "选择的文件已经上载到服务器! <br>"
? Response.Write("文件名," & ss)
? Response.Write("<br>Content-Type," & aa) '得到 Content-Type
? end if
? %>
? </BODY >
? </html>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? FileSystemObject 对象用于访问服务器上
的文件系统。此对象可操纵文件、文件夹
和目录路径。
? LyfUpload组件用于将浏览器方的文件上传到 WEB服务
器方
习题与作业
1,运用文件系统组件实现一个浏览器版的资源管
理器,能利用它来浏览文件,管理文件,如下
图所示
2,编写程序,实现从浏览器方上传文件到 WEB服
务器方
4.1文件存取组件与文件上传组件
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
本章内容与教学安排
理论,6学时
实验,6学时
4.1 文件存取组件与文件上传组件
4.2 Email组件与站点导航组件
4.3 其他组件与自编组件
课程引入与回顾
? Session 对象用于存储用户的信息。在整个
用户会话过程中,此信息都将保留。
? ASP 应用程序使用一个特殊的文件维护有
关该应用程序全局事件和对象的信息,该
特殊文件称为 Global.asa。
? Cookies 是一个很小的信息包,用于维护用
户计算机的状态信息。
目标
? 使用文件访问组件对文件系统进行操作
? 使用文件上传组件将浏览器方的文件上传
到 WEB服务器方
简介
? 使用服务器端组件,可以大大地扩展网络
服务器的功能。
? 服务器端组件中的一部分是由常规的
ASP/IIS安装程序提供的,而另一部分可以
从第三方获得。
? 本章主要介绍由 ASP/IIS提供的用于操作文
件系统的服务器端组件、文件上传组件、
email组件、文件超链接组件、广告处理组
件等。
4.1 文件存取组件
用来对 web服务器上的文件进行管理
File Access 组件 2-1
? 处理文件时可以使用文件访问组件( File
Access组件)。
? File Access组件用到下列对象:
– FileSystemObject:包含了处理文件系统的所
有基本方法。
– TextStream:用来读写文本文件。
– File:此对象的方法和属性用于处理单个文件 。
– Folder:此对象的方法和属性用于处理文件夹。
– Drive:表示磁盘驱动器或网络共享。
File Access 组件 2-2
? File Access组件有 3个集:
– Files集,代表在文件夹中的一系列文件。
– Folder集,代表在文件夹中的各子文件夹。
– Drive集,代表服务器上的驱动器或远程网络
共享。
FileSystemObject 对象
? ASP 提供了几个用于操纵驱动器、文件夹
和文件的对象。 FileSystemObject 对象用
于访问服务器上的文件系统。
? 此对象可操纵文件、文件夹和目录路径。
? 还可使用此对象来检索文件系统信息。
创建文本文件
<head><title>写文件 </title></head>
<body>
Writing file…
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.CreateTextFile(Server.MapPath("\chapter6\test.txt"))
for i=1 to 10
file1.WriteLine(CStr(i) & ",Hello There! ")
next
file1.close
%>
</body>
读取文本文件
<head><title>读文件 </title></head>
<body>
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.OpenTextFile(Server.MapPath("\chapter6\test.txt"),1,t
rue)
Do While not file1.AtEndOfStream
Response.Write file1.ReadLine & "<br>"
loop
file1.close
%>
</body>
向文件追加文本
<head><title>追加文件 </title></head>
<body>
追加数据 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
set file1 =
fs.OpenTextFile(Server.MapPath("\chapter6\test.txt"),8,t
rue)
for i=100 to 102
file1.WriteLine(CStr(i) & ",追加的新行。 ")
next
file1.close
%>
</body>
复制文件
<head><title>复制文件 </title></head>
<body>
复制文件 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.CopyFile Server.MapPath("\chapter6\test.txt"),
Server.MapPath("\chapter5")&"\"
%>
</body>
? CopyFile方法可将一个或多个文件从一个位置复制
到另一个位置。语法为:
FileSystemObject.CopyFile source,destination[,overwrite]
移动文件
<head><title>移动文件 </title></head>
<body>
移动文件 …
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.MoveFile Server.MapPath("\chapter5\test.txt"),
Server.MapPath("\chapter4")&"\"
%>
</body>
? FileSystemObject 对象的 MoveFile 方法可将一个
或多个文件从一个位置移动到另一个位置。
FileSystemObject.MoveFile source,destination
删除文件
<head><title>删除文件 </title></head>
<body>
删除文件 ?
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.DeleteFile Server.MapPath("\chapter4\test.txt")
%>
</body>
? FileSystemObject 对象的 DeleteFile 方法可将一
个或多个文件删除。
FileSystemObject.DeleteFile(fileSpecifier)
检查文件是否存在
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
Response.write "<p>根目录下的 \chapter6\test.txt:"
If fs.FileExists(Server.MapPath("\chapter6\test.txt")) then
Response.write "存在该文件 "
Else
Response.write "不存在该文件 "
End if
Response.write "<p>根目录下的 \chapter5\test.txt:"
If fs.FileExists(Server.MapPath("\chapter5\test.txt")) then
Response.write "存在该文件 "
Else
Response.write "不存在该文件 "
End if
%>
驱动器和文件夹的操作
? FileSystemObject对象的 Drive集包含了服务器上
所有驱动器的集合。关于驱动器的
FileSystemObject对象的方法:
方法 描述
DriveExists(DriveSpecifier) 指定的驱动器是否存在。若返回值为 TRUE,
则表示指定的驱动器存在。
Drives 返回本机上的驱动器集合。
GetDrive(DriveSpecifier) 返回指定驱动器的 Drive对象。
GetDriveName(Path) 返回指定路径的驱动器的字符串。
Drive对象的一些属性
方法 描述
AvailableSpace 返回驱动器上的可用空间(字节数)。
DriveLetter 返回驱动器字母。
DriveType 返回对应于某种类型的驱动器的一个数字,
如光盘或可移动驱动器。
IsReady 表示该驱动器是否已经准备好待用
RootFolder 返回驱动器上根文件夹的 Folder对象。
SerialNumber 返回驱动器的序列号。
TotalSize 返回驱动器的大小(字节数)。
Drive对象的属性使用示例
<html>
<head><title>驱动器列表 </title></head>
<body>
<%
set fs=Server.CreateObject("Scripting.FileSystemObject")
for each thing in fs.Drives
response.write "<br>驱动器字母,"& thing.DriveLetter
response.write "<br>驱动器总字节数,"& thing.TotalSize
response.write "<br>驱动器可用空间,"& thing.AvailableSpace
response.write "<hr>"
next
%>
</body>
</html>
复制文件夹
<%
'将文件夹 NewFiles 从 C:\复制到文件夹 c:\Files目
录下
Set fs =
Server.CreateObject("Scripting.FileSystemO
bject")
fs.CopyFolder "C:\NewFiles","C:\Files\ "
%>
移动文件夹
<%
Set fs=
Server.CreateObject("Scripting.FileSystemObject")
fs.MoveFolder "c:\NewFiles","c:\VeryNewFiles\ "
%>
创建文件夹
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
fs.CreateFolder("c:\asp")
%>
检查文件夹是否存在
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
If fs.FolderExists("c:\asp")=true then
Response.Write(“文件夹 c:\asp 存在!” )
Else
Response.Write(“文件夹 c:\asp 不存在!” )
End if
%>
删除文件夹
<%
Set fs =
Server.CreateObject("Scripting.FileSystemObject")
If fs.FolderExists("c:\Files\NewFiles")
then
fs.DeleteFolder("c:\Files\NewFiles")
End if
%>
4.2 文件上传组件
将客户端的文件上传到服务器端
LyfUpload组件简介
? LyfUpload组件,是一个免费的组件,遵从 RFC-1867
HTTP标准,可以在 ASP页面中接收用户端使用
entype=“multipart/form-data”的 Form上传的文件。
LyfUpload组件 使用方法
? 先下载 lyfupload.dll外部组件
? 将它 (lyfupload.dll)放在 winnt/system32目录
? 然后注册,regsvr32 lyfupload.dll
? 就可以和其它组件一样使用了
? 语法
– Set 对象名 =Server.CreateObject(“LyfUpload.UploadFile”)
LyfUpload组件 常用属性
属 性 说 明
extname 限制上传文件的类型
语法:对象名,extname=“文件扩展名”
maxsize 限制上传文件的大小
语法:对象名,maxsize=大小
dbcontent 得到文件的实际内容,为二进制的信息,一般用
于写入数据库
filesize 得到上传文件的大小 (只读 )
LyfUpload组件 常用方法
方 法 说 明
Request 得到上一个页面表单上传的元素值
形式,request(string)
FileType 得到上传文件的 ContentType,即文件类型。
形式,filetype(strtag)
SaveFile 将上传的文件保存到指定目录,形式:
savefile(strtag,strpath,strway[,destfilenam
e])
savefiletodb 上传文件到数据库,形式:
Savefiletodb(strtag)
返回值与 savefile类似
savefile(strtag,strpath,strway[,destfilename])说明
? Strtag:为 Form中文件元素的名称,如 file1
? Strpath,为文件要在服务器上保存的目录
? Strway:覆盖方式,为 true,则永许覆盖
? Destfilename:指定保存后的文件名
? 返回值:
– 若 成功,返回的传的文件名,若失败,返回为空串,若上传文件
太大,返回为 0(设置了 maxsize),若上传文件类型不对,返回为
1(设置了 extname),若上传文件与现有文件重名,则返回为 2(设置
了 strway参数为 false)
文件上传示例 1
<form method="POST" enctype="multipart/form-data"
action="fileupload.asp">
<p>文本框 1,<input type="text" name="text1"
size="20"><br>
选择文件,<input type="file" name="file1"><br>
<input type="submit" value="上载 "
style="background-color,rgb(0,0,255); color,
rgb(255,255,0)"> </p>
</form>
? Enctype的缺省值为:,application/x-www-form-
urlencoded”
文件上传示例 2
? <%@Language=VBScript CODEPAGE=932 %>
? <HTML>
? <BODY>
? <%
? Set obj = Server.CreateObject("LyfUpload.UploadFile")
? txt = obj.request("text1") '得到 form元素的值
? Response.Write( "文本框输入值是,"&txt)
? Response.Write "<br>"
? ss=obj.SaveFile("file1","C:\temp",true) '保存文件到服务器
? aa=obj.filetype("file1")
? if ss<> "" then
? Response.Write "选择的文件已经上载到服务器! <br>"
? Response.Write("文件名," & ss)
? Response.Write("<br>Content-Type," & aa) '得到 Content-Type
? end if
? %>
? </BODY >
? </html>
参考资料
? <<ASP动态网站编程 >> 石志国 清华大学出版社
? <<ASP精解案例教程 >> 石志国 清华大学出版社
? <<ASP网络编程技术与实例 >> 胡标 人民邮电出版社
? <<网络程序设计 -ASP>> 尚俊杰 清华大学出版社
总结
? FileSystemObject 对象用于访问服务器上
的文件系统。此对象可操纵文件、文件夹
和目录路径。
? LyfUpload组件用于将浏览器方的文件上传到 WEB服务
器方
习题与作业
1,运用文件系统组件实现一个浏览器版的资源管
理器,能利用它来浏览文件,管理文件,如下
图所示
2,编写程序,实现从浏览器方上传文件到 WEB服
务器方