蔡伯峰
(泰州职业技术学院,江苏 泰州 225300)
在Web应用系统开发中,经常须要上传文件保存到服务器上,但ASP内置对象和内置组件中并没有提供很方便的方法处理文件的上传,即使能通过编程实现,也是繁琐、耗时的,Web系统开发者往往难以掌握。为此,第三方公司开发了一些上传组件用于处理文件上传,其中功能强大又使用方便的是ASPUpLoad组件。它除了可上传文件并将其直接以文件形式保存到服务器磁盘上外,更能保存到内存中,并进而保存到数据库中,极大地方便了系统的移植和管理维护以及代码编写。通过在顶岗实习平台系统开发中的反复探索和实践,笔者总结了一套使用ASPUpLoad组件的行之有效的上传保存并下载的方法,现介绍于此。
ASPUpLoad组件须要注册后才能使用,直接在命令行输入regsvr32aspupload.dll命令并按回车即可。注册成功后通过SetUpload=Server.CreateObject("Persits.Upload")调用。
Save(OptionalPath):将文件保存到磁盘。当省略Path参数时保存到内存,但可通过File.Binary存取(SetFile=Upload.Files("file1")),或通过File.SaveAs保存到磁盘。
SetMaxSize(MaxSize,Optional?Reject):指定单个文件的限定大小(Bytes)。参数Reject指定过大的文件是否会拒绝(True的时候)或截取(False或省略的时候)。
SendBinary(Path):用作文件下载。将指定的文件发送给浏览器。
CreateDirectory(Path,OptionalIgnoreAlreadyExists):创建目录。
CreateFile(Path):创建一个空文件。
FileExists(Path):检测文件是否存在。
OpenFile(Path):建立一个File实例,它指向指定的文件。
CopyFile(FromPath,ToPath,OptionalOverwrite):复制文件。
DeleteFile(Path):删除文件。
RemoveDirectory(Path):删除目录。如果目录包含文件或子目录,会报错。
FromDatabase(Connect,SQL,Path):使用ODBC从数据库表中输出image字段到磁盘。
FromRecordset(RecorsetValue,Path):使用Recordset对象从数据库表中输出image字段到磁盘。
Files:集合。它包含有各个上传文件的引用。
Form:集合。它包括所有非文件域的表单域的引用。
Directory(Path):集合。它包括指定目录的所有子目录和文件的引用,Path?可以包括通配符*和?。
TotalBytes:上传的总字节数。只能在成功调用Save方法后访问该属性。
TotalSeconds:上传持续的总时间。只能在成功调用Save方法后访问该属性。
OverWriteFiles:默认为True。如果设置为False,那么当文件名已经存在时,AspUpload会在原文件名后附加“(1)”、“(2)”形式的字符,如aaa.jpg、aaa(1).jpg、aaa(2).jpg。
IgnoreNoPost:值为Boolean型。当Save方法被脚本直接调用,而不是通过表单提交时,可以避免出现“WrongContent-Type”错误。
ProgressID:上传进度条所用的,用来区分上传进程。
在顶岗实习平台中,须要上传若干文件。假如某学校某届实习学生为3000人,在实习总结报告或论文撰写期间,实习学生与校内联系老师之间要相互传递初稿、二稿、终稿,有时还有三稿等,如果将这些文件全部保存到服务器,那么将会有一万个左右的文件。如果再加上开题报告、平时学生与联系老师交流时上传的文件、其他管理文件等,其数目将相当惊人,不便于管理维护、移植和长久保存。为此,可借助于SQL Server数据库的强大存储能力和image字段,直接将每次上传的文件保存到数据库中。图1和图2分别是学生论文报告的提交界面和数据库表结构。上传时的关键代码如下:
图1 论文报告提交界面
图2 “论文报告”表结构
由于文件上传后保存到数据库中,因此在查看或下载该文件时,须要先显示出文件名,当用户点击文件名链接时弹出下载对话框提示进一步的操作。显示文件名链接的关键代码如下:
使用ASPUpLoad组件实现文件上传功能,既方便又实用。通过在顶岗实习平台系统开发中的实际运用表明,使用ASPUpLoad不仅减少了文件上传代码编写的工作量,而且通过直接将文件保存到数据库中,极大地减少了系统中的文件数量,方便了系统的移植和维护管理,只要SQLServer数据库的安全性得以保证,所有上传的文件就完好无损。除此以外,ASPUpLoad组件还有多种功能,如创建删除目录、文件,将文件发送给浏览器,限制文件上传大小,是否允许反复上传等。
[1]马增友,姚莹,郭玮莉,孔维.ASP 网站设计与开发技能实训教程[M].北京:科学出版社,2010.
[2]邹于丰,梁霄波,秦永俊.基于ASP 的文件上传系统的设计与实现[J].计算机时代, 2009,(12):33-35.
[3]贾颖,肖晓飞.基于ASP 的教学网站文件上传策略研究[J].计算机教育,2008,(2):100-102.