文件上传对于网站后台管理而言是一个很重要的功能。我们在上传文件的同时,可以把文件名、文件类型、版本、文件大小、下载路径、文件说明等相关信息保存在数据库中,用数据库的强大功能来管理各种类型的文件,包括对文件进行关键字匹配检索。
目前使用得最广泛的网页开发技术非微软的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组件也完全能够做得到。再配合数据库,您可以对文件上传实行账号权限管理,严格分发各个账户所具有的不同的上传权力,避免恶意用户无限制地上传垃圾文件继而堵塞网络,撑爆服务器硬盘,充分保证网络的畅通与服务器的安全。