网址大全 | 文章大全 | 精选文摘 | 桌面壁纸 | 站长资源 | 在线手册 | 幽默笑话 | 天气预报 | FLASH    | 歇后语
便民查询 | 成语词典 | 五笔字典 | 新华字典 | 周公解梦 | 在线算命 | 生日密码 | 网络电台 | 网站留言 | 许愿墙
您的位置:首页 >> 文章大全 > 网络编程 > ASP
站内搜索:
网络编程专栏
VB.NETASP
ASP.NETC#
数据库PHP
技巧篇Delphi
相关文章
·Flash抓图组件FlashC...
·AspHTTP组件的属性
百度搜索 全网 本站
本类排行 more>>
·ASP中 Request对象探...
·asp读取xml
·asp翻页优化代码
·用ASPSmartUpload组件...
·什么是 Cookie
·如何用Request对象获...
·用数组方法显示数据库...
·给你的网页加把锁
·AspHTTP组件的属性
·Cookies 簡介
最新文章 more>>
·《网站配色方案》系列...
·《网站配色方案》系列...
·岳飞传的流程攻略
·百度漂亮 但Google更...
·个人站长的胜利 新网...
·搜搜问问抢不了百度知...
·视频网站接连败退 营...
·曹操传 杨家将传奇 官...
·专家为股民支招:网络...
·优秀站长访谈:个人网...
用ASPSmartUpload组件实现ASP文件上传

[ 作者:佚名 来源:网络 点击数:226 加入时间:2006-3-28 ]

【双击左键自动滚屏】【图片上滚动鼠标滚轮变焦图片】 【字体:放大 正常 缩小】 字体颜色:
便民查询  中华五千年  世界五千年  万年历  天气预报  周公解梦  脑筋急转弯  在线翻译  电信话费查询
文件上传对于网站后台管理而言是一个很重要的功能。我们在上传文件的同时,可以把文件名、文件类型、版本、文件大小、下载路径、文件说明等相关信息保存在数据库中,用数据库的强大功能来管理各种类型的文件,包括对
文件进行关键字匹配检索。

 

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

笔者在本文里向大家介绍的这款文件上传组件----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

   n   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:

 

文件名:

说明:

文件名:

说明:

文件名:

说明:

文件名:

说明:

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

文件upload_1.asp:

<%

sub show_files()

on Error Resume Next

'定义上传目录

const dirUpload = "upload"

set objUpload = server.CreateObject("aspSmartUpload.SmartUpload")

'限制最大上传字节数

objUpload.TotalMaxFileSize = 300000

‘限制文件上传类型为文本与图象

'objUpload.AllowedFilesList = "txt,jpg,gif"

‘文件上传

objUpload.Upload

'保存文件在upload目录,同时取得上传的文件数

intNo = objUpload.save(dirUpload)

‘如果Err值=0,则说明上传成功

if Err <> 0 then

response.write "上传文件错误: "&Err.Description&""

else

response.write "共上传了 "&intNo&" 个文件!

"

response.write "分别是:
"

nPoint = 1

‘遍历files集合,取出上传文件的属性

for each thefile in objUpload.files

'如果上传文件不为空

if thefile.fileName <> Empty then

'先输出FORM中的input名,如file01、file02等

response.write thefile.Name&" = "

'输出文件名(不含路径)

response.write thefile.fileName&" ("

'输出各个文件的字节数

response.write FormatNumber(thefile.size,0)&"bytes)
"

response.write "说明:"&objUpload.Form.Item("disc"&nPoint)&"

"

nPoint = nPoint+1

end if

Next

response.write "

上传总字节数:"&""&objUpload.files.Totalbytes&"
"

response.write "可上传的最大文件数:"&""&objUpload.files.count&"
"

response.write "


"

end if

end sub

%>

<% show_files %>

四、 上传文件到数据库

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

表单文件:upload_2.htm

上传图片到数据库

图形文件类型:

GIF  

JPG  

BMP   

文件名:

文本说明:


文件名:

文本说明:


文件名:

文本说明:


文件名:

文本说明:


upload_2.asp文件:

<%

dim strDSN,adocon

sub insert_DB()

const dirUpload = "upload"

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

'单个文件最大为100K

objUpload.MaxFileSize = 100000

objUpload.upload

'保存文件,并取出实际上传的文件数

intNo = objUpload.save(dirUpload)

on Error Resume Next

'数据源字串

strDSN = "Driver={SQL Server};Server=10.98.3.2;uid=sa;pwd=;database=asp;autotranslate=no;"

'取出文件类型

strType = objUpload.form("itype")

 

'通过SELECT获得最新的ID值

newid = get_NewID(strDSN)

 

'将初始的ID值作个备份,在屏幕上显示时会用到

newid_list = newid

 

set rs = Server.CreateObject("ADODB.RecordSet")

rs.open "upload",adocon,1,3

nCount = 1

for each file in objUpload.files

'如果没有指定文件,则 file.IsMissing 为真

if not file.IsMissing then

‘添加一条记录

rs.addnew

rs("id") = newid

rs("path") = file.FileName

rs("descrp") = objUpload.Form("desc"&nCount)

rs("trans_date") = now

rs("imgtype") = strType

‘利用file的FileToField方法将文件保存在数据库中

file.FileToField rs("urimage")

rs.update

newid = newid+1

nCount = nCount+1

end if

Next

rs.close:set rs = nothing

 

if Err <> 0 then

Response.write "上传文件错误: "&Err.Description&""

else

response.write "上传成功!

文件是:
"

for each file in objUpload.files

if file.filename <> Empty then

response.write "ID = "&newid_list&","

response.write file.name&" = "&file.filename&" ("&formatNumber(File.size,0)&" bytes)
"

newid_list = newid_list+1

end if

next

response.write "


"

end if

end sub

 

‘取出表upload中的最大ID值

function get_NewID(strDSN)

set adocon = Server.CreateObject("ADODB.Connection")

adocon.open strDSN

set rs1 = adocon.Execute("select id from upload order by id desc")

if not rs1.eof then

get_newID = rs1("id")+1

else

get_NewID = 1

end if

rs1.close:set rs1 = nothing

end function

%>

 

<% insert_DB %>

 

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

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

objUpload.upload

intNo = objUpload.save(“upload”)

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

 
 

国家纸币  自考信息  度量转换  搜索引擎指南  城市经纬度  脑筋急转弯  各国资料  名言辞典  违章查询
·上一篇文章:ASP函数大全
·下一篇文章:什么是SATA
百度搜索更多内容:用ASPSmartUpload组件实现ASP文件上传
推荐文档】 【打印文档】 【返回页首】 【关闭窗口