良精科技Archiver

标题:ASPUpload组件 文章发表于2010.08.11

立即下载
拷贝AspUpload.dll和所有.asp和.htm文件到你服务器的任何目录,如c:\AspUploadDir. 注册组件从MS DOS或Start/Run执行命令
REGSVR32 c:\AspUploadDir\AspUpload.dll
为了运行示例脚本,你需要将目录c:\AspUploadDir加入IIS虚拟目录清单中(使用Microsoft Managemant Console)开始
这是我们第一个html文件 Test1.htm
<HTML>
<BODY BGCOLOR="#FFFFFF">
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript1.asp">
<INPUT TYPE=FILE SIZE= 60NAME="FILE1"><BR>
<INPUT TYPE=FILE SIZE= 60NAME="FILE2"><BR>
<INPUT TYPE=FILE SIZE= 60NAME="FILE3"><BR>
<INPUT TYPE=SUBMIT VALUE="Upload!">
</FORM>
</BODY>
</HTML>注意
在Form标记的属性 ENCTYPE="multipart/form-data" 他指示浏览器发送整个文件到服务器而不只是输入框内的文件名称。 你必须加上在Form标记内加上这个属性,否则将不能上传组件。让我们现在看看处理上传的脚本: UploadScript1.asp:
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save("c:\upload")
%>
<% = Count %> files uploaded.
</BODY>
</HTML>
这段脚本的第一行简单创建了一个AspUpload对象的实例。第二行调用组件的真正实现功能的方法Save:处理浏览器传过来的数据,计算有多少文件被上传了,并把它们保存到指定的本地目录。目录名字可以以"\"结尾,也可以不是。所有文件会被以原来的文件名保存在那个目录下。
Save方法返回成功上传文件的数目,万一出错,这个方法将抛出一个例外(Exception),我们现在可以尝试着上载一些文件。注意:你可以使用表单上这3个输入框中的任何一个或者全部。ASPUpload会找出那个输入框是使用了的,而那个是没有使用的。让我们看一看一个例子的文件,test2.htm和UploadScript2.asp
<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= TEXTNAME="DESCR1"><BR>
File 2:<INPUT TYPE=FILE NAME="FILE2">
Description 2:<INPUT TYPE= TEXTNAME="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>
Otheritems:<BR>
<%
For Each Item in Upload.Form
Response.Write Item.Name & "= " & Item.Value &"<BR>"
Next
%>
</BODY>
</HTML>
注意:我们的html Form现在有两种输入框,type=file和type=text。因为我们的表单使用了enctype属性,我们可以不再直接通过标准的ASP Request对象方法访问表单变量。 Form集合,由Upload.Form集合来代替。这个集合就等同Request.Form.也就是说,我们可以通过整数或字符串索引访问它的元素,例如:Set Item1 = Upload.Form("DESCR1")

Set Item1 = Upload.Form(1).
我们也可以像上面的例子那样使用For-Each语句,遍历集合中的所有元素。Form集合包含的类型为FormItem的对象,只有2个字符串的属性,Name和Value(缺省属性)
请记住,upload.Form集合只包括非文件的项目,也就是说非<input type=file>的表单项目。我们还有另外一个集合,叫Files,包含类型为UploadFile的对象,代表了从<input typ=file>上传的文件。Files很像Form集合,Files集合也可以使用字符串或者索引访问,或者通过 For-Each语句(如上面所示)
在运行了例子2之后,我们就会看到像这样的东西:
Files:
FILE1=c:\upload\File1.xls (108544)
FILE2=c:\upload\File2.zip (211687)
Other items:
DESCR1=bla bla
DESCR2=test test
注意:我们已经通过UploadFile对象的Path和size属性获得目的路径和上传文件的大小N
如果我们的表单只含有一个文件输入框,如:<INPUT TYPE=FILE NAME="ONLYFILE">,那么就用不着使用for-each语句,我们可以简单这么写:
Response.Write Upload.Files("ONLYFILE").Path
或者更通常的可以用
Response.Write Upload.Files(1).Path
注意:除非Save方法被调用,否则Files和Form集合都是无效的。在调用Upload.Save之前调用,是错误的
' 错误!
Upload.Save( Upload.Form("Path") )
文件大小设定限制
    假定你需要限制上传文件的大小,以便防止不符责任的用户消耗你的硬盘空间。你需要做的只是在调用Save之前,使用SetMaxSize方法。
Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.SetMaxSize 50000, False
Upload.Save "c:\upload"
在这个例子里面我们限制了上传文件为50000字节。这个可选的第二个参数指定是否一个文件大于最大字节数时候是被截断。(如果设置为fase,或者忽略。)或者遇上错误就放弃(如果设置发false)强制
 下一篇: JMail 4.4 组件 回到顶部
 上一篇: 王码五笔输入法  回到顶部

Liangjing© 1998- 2020