【 tulaoshi.com - ASP 】
简介
文件上传是将任意的文件从客户机发送到服务器的过程。最简单、最方便的上传方法是使用支持RFC1867的浏览器,如微软的Internet Explorer4.0以上版本,Netscape3.0以上版本,或者带附件的Internet Explorer3.0。基于浏览器的文件上传是通过带有属性ENCTYPE="multipart/form-data"的HTML form实现的。这个form也必须包含一个或多个<INPUT TYPE=FILE项,以让用户指定要上传的本地文件。
带有ENCTYPE="multipart/form-data"属性的form所发送的数据必须被一个服务器端过程解析,以展开上传的文件和其他非文件项。在ASP环境中,这种任务用编译好的active server组件能最好的完成,比如Persits软件公司的AspUpload
(http://www.persits.com)。
本文所有示例都是建立在你的系统中安装了AspUpload的基础上的。可以在这里下AspUpload
免费评估版http://www.persits.com/aspupload.html。解压文件后,将AspUpload.dll
放在任意目录中,在MS DOS窗口中执行命令
regsvr32 c:dirAspUpload.dll
开始
我们来创建一个简单的能上传3个文件的HTML form,和控制上传的脚本。
这里是第一个HTML文件
Test1.htm:
<HTML
<BODY BGCOLOR="#FFFFFF"
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript1.asp"
<INPUT TYPE=FILE SIZE=60 NAME="FILE1"<BR
<INPUT TYPE=FILE SIZE=60 NAME="FILE2"<BR
<INPUT TYPE=FILE SIZE=60 NAME="FILE3"<BR
<INPUT TYPE=SUBMIT VALUE="Upload!"
</FORM
</BODY
</HTML
每个 <INPUT TYPE=FILE 项在浏览器中显示成为一个带有"Browse..."按钮的文本输入框。如果你没看见Browse按钮,很有可能说明你的浏览器不支持文件上传。
这里是相应的上传脚本 UploadScript1.asp:
<HTML
<BODY
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save("c:upload")
%
<% = Count % files uploaded.
</BODY
</HTML
ASP脚本的第一行仅仅创建了一个AspUpload对象的实例。第二行调用组件的Save方法,它实际上的作用是:它解析从浏览器发送的东西,计算出有多少个文件正在上传,并且把他们存在服务器上指定的目录。目录名可能以反斜线结束,也可能不是。所有文件将以他们原来的名字存放在目录中。我们很快将看到如何更改任意或者所有文件的名字。
Save方法返回成功上传的文件数量。万一发生错误,这个方法将抛弃之。
注意你能够使用我们的form中任意或者全部三个输入框。AspUpload有足够的智慧判断出哪些输入框使用了,哪些没有。
使用FILES和FORMS集合访问单个form项
我们看看第二组示例:
Test2.htm
<HTML
<BODY BGCOLOR="#FFFFFF"
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript2.asp"
File 1:<INPUT TYPE=FILE NAME="FILE1"
Description 1:<INPUT TYPE=TEXT NAME="DESCR1"<BR
File 2:<INPUT TYPE=FILE NAME="FILE2"
Description 2:<INPUT TYPE=TEXT NAME="DESCR2"<BR
<INPUT TYPE=SUBMIT VALUE="Upload!"
</FORM
</BODY
</HTML
UploadScript2.asp <HTML
<BODY
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.Save "c:upload"
%
Files:<BR
<%
For Each File in Upload.Files
Response.Write File.Name & "=" & File.Path & " (" & File.Size & ")<BR"
Next
%
<P
Other items:<BR
<%
For Each Item in Upload.Form
Response.Write Item.Name & "=" & Item.Value & "<BR"
Next
%
</BODY
</HTML
注意我们的HTML form现在有两种输入框,TYPE=FIL