<script language="JavaScript1.1" src="http://ad.ccw.com.cn/adshow.asp?positionID=38&amp;js=1&amp;innerJs=1"></script> |
目前使用得最广泛的网页开发技术非微软的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:
<script language=vbscript>
sub datacheck()
if upload.file01.value = Empty then
MsgBox "文件名不能为空!",64,"Oh no!"
focusto(0)
exit sub
end if
upload.submit
end sub
sub focusto(x)
document.upload.elements(x).focus()
end sub
</script>
<body>
<form method="post" name="upload" action="upload_1.asp" enctype="multipart/form-data">
文件名:<input type=file size=50 name="file01"><br>
说明:<input type=text size=50 name="disc1"><p>
文件名:<input type=file size=50 name="file02"><br>
说明:<input type=text size=50 name="disc2"><p>
文件名:<input type=file size=50 name="file03"><br>
说明:<input type=text size=50 name="disc3"><p>
文件名:<input type=file size=50 name="file04"><br>
说明:<input type=text size=50 name="disc4"><p>
<input type=button value="upload now!" onclick="datacheck">
</form>
在用户指定文件名、按了“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 "上传文件错误: <font color=ff0000>"&Err.Description&"</font>"
else
response.write "共上传了 <font color=ff0000><b>"&intNo&"</b></font> 个文件!<p>"
response.write "分别是:<br>"
nPoint = 1
‘遍历files集合,取出上传文件的属性
for each thefile in objUpload.files
'如果上传文件不为空
if thefile.fileName <> Empty then
'先输出FORM中的input名,如file01、file02等
response.write thefile.Name&" = <font color=0000ff><b>"
'输出文件名(不含路径)
response.write thefile.fileName&" </b></font>("
'输出各个文件的字节数
response.write FormatNumber(thefile.size,0)&"bytes)<br>"
response.write "说明:<font color=silver>"&objUpload.Form.Item("disc"&nPoint)&"</font><p>"
nPoint = nPoint+1
end if
Next
response.write "<p>上传总字节数:"&"<font color=0000ff><b>"&objUpload.files.Totalbytes&"</b></font><br>"
response.write "可上传的最大文件数:"&"<font color=0000ff><b>"&objUpload.files.count&"</b></font><br>"
response.write "<hr>"
end if
end sub
%>
<body>
<% show_files %>
</body>
四、 上传文件到数据库
上面的例子是将文件上传到服务器的目录中。ASPSmartUpload组件还支持将文件上传到数据库。笔者以图象文件为例,向大家详细讲解如何将文件上传到SQL Server数据库。我们假定数据库所在服务器的IP地址为10.98.3.2,上传文件保存在数据库ASP的upload表中。
表单文件:upload_2.htm
<script language="VBScript">
dim intType
sub datacheck()
dim strType
if upload.file1.value = Empty then
MsgBox "文件名不能为空!",64,"Oh no!"
focusto(0)
Exit sub
end if
‘通过单选钮的值来判断用户输入的文件类型是否为用户选中的类型
if upload.file1.value <> Empty then
select case intType
case 2
strType = "jpg"
case 3
strType = "bmp"
case else
strType = "gif"
end select
‘将用户输入的文件名的后缀与选中的文件类型相比,如果不同,则用户需要上传的文件类型与
‘用户在单选钮中选中的类型不相同,拒绝上传。
if lCase(right(Trim(upload.file1.value),3)) <> strType then
Msgbox "选取的图形文件格式("&strType&") 不相符!",64,"oh no!"
focusto(3)
Exit Sub
end if
end if
upload.submit
end sub
sub focusto(x)
document.upload.elements(x).focus()
end sub
</script>
<body>
<div align=center>上传图片到数据库</div>
<p>
<form method="post" name="upload" action="upload_2.asp" enctype="multipart/form-data">
图形文件类型:
<input type=radio name=itype value="gif" onClick="intType=1" checked> GIF
<input type=radio name=itype value="jpg" onClick="intType=2"> JPG
<input type=radio name=itype value="bmp" onClick="intType=3"> BMP
文件名:<input type=file size=50 name="file1"><br>
文本说明:<input type=text size=50 name="desc1"><hr>
文件名:<input type=file size=50 name="file2"><br>
文本说明:<input type=text size=50 name="desc2"><hr>
文件名:<input type=file size=50 name="file3"><br>
文本说明:<input type=text size=50 name="desc3"><hr>
文件名:<input type=file size=50 name="file4"><br>
文本说明:<input type=text size=50 name="desc4"><hr>
<input type=button value="上传文件" onclick="datacheck">
</form>
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 为真
相关推荐
【ASPSMARTUPLOAD】是针对ASP(Active Server Pages)平台的一款强大的文件上传组件,它使得在ASP环境下处理文件上传变得简单而高效。ASP是微软开发的一种服务器端脚本环境,用于生成动态网页。在传统的ASP中,文件...
3. **编写服务器端脚本**:使用ASP和aspSmartUpload的API来处理文件上传,包括接收上传的文件、验证文件、保存文件等。 4. **处理上传结果**:根据上传成功或失败的情况,向用户反馈结果。 5. **优化和调试**:...
ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于创建...总的来说,aspSmartUpload组件为ASP开发者提供了一个方便、高效且安全的文件上传解决方案,使得在ASP网站中实现文件上传功能变得更加简单。
通过aspSmartUpload,开发者可以轻松地在ASP(Active Server Pages)应用程序中实现文件上传功能,从而提升用户体验并简化后台处理。 在ASP网页开发中,文件上传是常见的需求之一,例如用户可能需要上传个人照片、...
ASPSmartUpload是一款经典的ASP(Active Server Pages)上传...总的来说,ASPSmartUpload是ASP开发中实现文件上传功能的利器,通过其丰富的功能和易用性,可以帮助开发者节省大量时间,专注于更重要的业务逻辑开发。
文章通过对ASP与SQL Server 2000间图像文件存取的研究和实现,提出了使用ActiveX服务器组件来解决图像数据存储和读取的需求,这一研究不仅具有理论意义,而且在实际应用中,如商品展示、网络调查等Web应用场合具有...
部署于IIS上的计算机网络考试环境,采用ASP编写,数据库为ACCESS,系统用户分为教师和学生两大类,教师可以进行课件管理、考试过程管理,可绑定学生考试机IP,可查看下载考生上传的结果文件;考生可注册、登录、下载...