Bootstrap

用ASPSmartUpload组件实现ASP文件上传

文件上传对于网站后台管理而言是一个很重要的功能。我们在上传文件的同时,可以把文件名、文件类型、版本、文件大小、下载路径、文件说明等相关信息保存在数据库中,用数据库的强大功能来管理各种类型的文件,包括对文件进行关键字匹配检索。

目前使用得最广泛的网页开发技术非微软的ASP莫属,但遗憾的是ASP却没有文件上传功能,我们只能通过第三方组件来实现。事实上,的确有不少组件可以支持ASP文件上传,甚至还有开发者研究出了无组件上传的方法。但纵观这些技术,总有这样或那样的缺点,要么使用太复杂,不易控制;要么需要付费,免费的功能太简单,无法深入地控制。

笔者在本文里向大家介绍的这款文件上传组件----ASPSmartUpload,是由ASPSmart公司开发的,它功能强大,更重要的是它是完全免费的,非常符合我们“不花钱、多办事”的要求,是一个非常优秀的文件上传组件。简要地说,它有如下特点:

笔者在本文里向大家介绍的这款文件上传组件----ASPSmartUpload,是由ASPSmart公司开发的,它功能强大,更重要的是它是完全免费的,非常符合我们“不花钱、多办事”的要求,是一个非常优秀的文件上传组件。简要地说,它有如下特点:

● 可限制上传单一文件的大小及多个文件的全部大小

● 一次可上传多个文件

● 可同时传送一般的表彰字段与文件

● 可将上传文件(如图形文件、ZIP文件等)写入数据库

● 可限制上传文件的类型

● 允许从数据库或文件取回先前上传的内容

下面我们先来看一看ASPSmartUpload对象的使用方法和属性。

一、 注册ASPSmartUpload组件

要在ASP页面中使用ASPSmartUpload组件,首先需要在使用它的机器上注册。注册的步骤很简单:

1、 将下载的ASPSmartUpload.zip解压缩到某个目录,如c:/temp,由于ASPSmartUpload无法自动安装,所以在找到ASPSmartUpload.dll之后,需要手工在DOS方式下或“开始/运行”键入命令:

regsvr32.exe c:/temp/ASPSmartUpload.dll

系统会弹出一个窗口显示成功注册信息。

2、 接下来复制另一个dll文件ASPSmartUploadUtil.dll到windows/system32目录下,此时就完成了ASPSmartUpload组件的注册与安装。

二、 ASPSmartUpload对象简介

1、SmartUpload对象的属性和方法

SmartUpload对象可以在ASP中直接被创建,其语法为:

Set myUpload = server.CreateObject(“ASPSmartUpload.SmartUpload”)

myUpload.Collections | Properties | Methods

SmartUpload对象的主要属性与方法一览表:

属性/方法

 

说明

 

属性

 

TotalMaxFileSize

 

允许上传的全部文件的大小

 

MaxFileSize

 

允许上传的单个文件的大小

 

AllowedFilesList

 

允许上传的文件类型列表

 

DeniedFilesList

 

禁止上传的文件类型列表

 

DownloadBlockSize

 

一次读取文件的大小

 

TotalBytes

 

POST表单中的大小(以字节为单位)

 

方法

 

Upload

 

上传POST表单

 

Save

 

保存上传文件到指定目录

 

DownloadFile

 

下载一个文件

 

DownloadField

 

从数据库中下载先前上传的文件

 

FieldToFile

 

将文件上传到数据库中

 

UploadInFile

 

POST表单保存到文件中

 

SmartUpload有两个集合,分别是Files集合和Form集合,其层次关系为:

 

ASPSmartUpload

 

l   Files

 

n   file

 

l   Form

item

 

2、Files对象的属性和方法

myFiles.Collection | Properties | Method

它只有一个集合,为file集合。

Files对象的主要属性与方法一览表:

属性/方法

 

说明

 

属性

 

Count

 

文件对象的个数

 

TotalBytes

 

文件集合的大小(以字节为单位)

 

方法

 

Item(ID)

 

缺省方法,返回指定带有指定ID的文件对象

 

File对象的调用语法:

myFile.Properties | Methods

file对象的主要属性与方法一览表:

属性/方法

 

说明

 

属性

 

Name

 

POST表单项名

 

FileName

 

用户键入的文件名

 

FileExt

 

用户键入的文件后缀

 

FilePathName

 

用户键入的文件路径

 

ContentType

 

用户键入的文件类型

 

Size

 

文件大小

 

IsMissing

 

若未指定文件则为真

 

TypeMIME

 

用户键入的MIME类型

 

Count

 

文件对象的个数

 

TotalBytes

 

文件集合的大小(以字节为单位)

 

方法

 

SaveAs

 

保存文件(覆盖文件名相同的文件)

 

FileToField

 

上传文件到数据库

 

三、 多个文件上传

对ASPSmartUpload组件及其属性方法有了初步的了解后,我们来动手开发一个允许多个文件上传的页面,在上传的同时还可以给各个文件加上说明。

一般的HTML标记即可上传文件,只要将FORM标记的ENCTYPE属性赋为“multipart/form-data”值即可。在下面的例子中,我们最多可以同时上传四个文件。我们假定上传目录为当前目录下的upload子目录,由于要往upload目录中写入文件,因此必须将该目录中everyone的安全权限设为“修改”或“完全控制”。

表单文件upload_1.htm:

<script language="vbscript" type="text/javascript"></script>

 

 

文件名:

说明:

 

文件名:

说明:

 

文件名:

说明:

 

文件名:

说明:

 

 

在用户指定文件名、按了“upload now!”按钮后,会激发后端的ASP程序upload_1.asp实现上传操作,代码见下。笔者在代码中添加了详细的注释,相信应该不难理解。

文件upload_1.asp:

 

 

四、 上传文件到数据库

上面的例子是将文件上传到服务器的目录中。ASPSmartUpload组件还支持将文件上传到数据库。笔者以图象文件为例,向大家详细讲解如何将文件上传到SQL Server数据库。我们假定数据库所在服务器的IP地址为10.98.3.2,上传文件保存在数据库ASP的upload表中。

表单文件:upload_2.htm

<script language="VBScript" type="text/javascript"></script>

 

 

上传图片到数据库

 

 

 

图形文件类型:

GIF  

JPG  

BMP   

文件名:

文本说明:


 

文件名:

文本说明:


 

文件名:

文本说明:


 

文件名:

文本说明:


 

 

upload_2.asp文件:

 

 

 

通过上面的例子可以看出,用ASPSmartUpload组件进行文件上传,其实只需要三行语句:

set objUpload = Server.CreateObject("AspSmartUpload.SmartUpload")

objUpload.upload

intNo = objUpload.save(“upload”)

如果您对文件上传的控制不是很严格,那么只需要这三条语句就可以了。如果您想对上传进行严格的控制管理,如限制上传文件的大小、文件类型、存放目录等,ASPSmartUpload组件也完全能够做得到。再配合数据库,您可以对文件上传实行账号权限管理,严格分发各个账户所具有的不同的上传权力,避免恶意用户无限制地上传垃圾文件继而堵塞网络,撑爆服务器硬盘,充分保证网络的畅通与服务器的安全。

 
;