您的位置:首页 > 运维架构 > 网站架构

动易swCMS6.5网站多个文件的上传功能模块

2008-02-25 18:25 260 查看
 
动易swCMS6.5网站多个文件的上传功能模块
 
网站一般有单/多个文件的上传,但实现上传功能的核心代码是一样的
只是多文件的上传是循环执行了上传功能的代码而已
 
动易cms6.5网站的多文件上传功能模块由HTML在线编辑器的按钮调用
批量上传图片:editor_insertpic.asp    要求多文件的上传
上传图片:editor_Modifypic.asp
上传flash:editor_insertflash.asp
上传wmv影片:editor_insertmedia.asp
上传流媒体rm:editor_insertrm.asp
上传附件:editor_insertfujian.asp
 
除了HTML在线编辑器使用了上传页面外,
网站中还有其他地方使用到文件的上传功能,例如:
上传广告图片:Admin_Advertisement.asp
管理员上传下载频道的下载文件:Admin_Soft.asp
用户上传下载频道的下载文件:User/User_Soft_Code.asp
用户上传聚合空间的个人照片:User/ User_Photo_Code.asp
管理员管理聚合空间的用户照片:Admin_SpaceManage.asp
 
以上上传文件的页面表单内容的显示是根据Editor/Upload.asp文件后传递的参数决定的
所以以上文件上传页面都包含了对文件Upload.asp的引用
文件Upload.asp的内容很简单:只有两个过程的调用语句
Call ShowUploadForm      
Call CloseConn
其唯一的作用就是根据不同的上传页面显示出相应的表单内容
表单调用的上传处理文件是:Upfile.asp
文件Upfile.asp的内容也很简单:
Server.ScriptTimeOut = 9999999
Call Execute       '执行上传操作(该过程包括单/多文件的上传代码)
Call CloseConn
 
Upload.asp和Upfile.asp都包含了文件PowerEasy.Upfile.asp
因为过程ShowUploadForm()和Execute()的代码都包含在其中
 
下面我们重点对实现文件上传的Execute()过程代码的设计顺序进行分析:
1. 判断服务器是否支持FSO组件的使用,若否则退出过程,上传失败
2. 判断用户或管理员是否已登陆,未登陆则不能上传文件
子函数CheckLogin()的详细代码也在该文件中浏览
3. 对提交的上传文件的数据进行分析,例如:
是否上传了空文件,是否超出了上传文件大小的限制
4. 实现各上传页面要求上传文件存放的目录创建
5. 循环执行所有要上传的文件
若仅有单个文件上传,则成功上传该文件后退出循环。
若上传的是多个文件的上传则累计成功上传的文件个数后
继续循环执行下一个文件的上传
 
'===================实现文件上传的核心代码===================
Set oFilestream = Server.CreateObject("ADODB.Stream")
oFilestream.Type = 1
oFilestream.Mode = 3
oFilestream.Open
oUpFilestream.Position = cFileStart
oUpFilestream.CopyTo oFilestream, cFileSize
oFilestream.SaveToFile Server.MapPath(tmpPath)   '保存文件
oFilestream.Close
Set oFilestream = Nothing
'============================================================
FileCount = FileCount + 1     '累计成功上传的文件个数
 
6. '=====根据上传文件的类型显示不同的成功提示信息=====
Select Case FileType     
Case "batchpic"             '批量上传图片
Response.Write "<li>第 " & i + 1 & " 张图片上传成功!"
……
              Case "pic"       '插入一张图片
                     ……
                     Response.Write "图片上传成功!
                     ……
                     Exit For   '一张图片上传成功后就退出循环
              … … … End Select
       有些上传文件成功的HTML内容是保存在JS文件中的
这些细节可从上面的代码中看出
7. 成功上传单/多个文件后的的清理打扫工作:
 Set PE_Thumb = Nothing     '将图片文件处理类的对象(生成水印,生成缩略图)清除
 
 '清除变量及ASP的Dictionary对象
 Forms.RemoveAll
 Set Forms = Nothing
 Files.RemoveAll
 Set Files = Nothing      
 oUpFilestream.Close     ‘关闭并释放ASP的Stream对象
 Set oUpFilestream = Nothing
   
 Call ClearAspFile(SavePath & dirMonth)     '删除上传目录中后缀名不允许的上传文件
'该过程位于文件PowerEasy.FSO.asp中,这是一项安全且节省空间的措施。
 
总结:
动易网站的上传文件模块重点关注四个文件:
Upload.asp
Upfile.asp
PowerEasy.Upfile.asp
PowerEasy.CreateThumb.asp上传图片的处理类(水印,缩略图)
 
上传文件的程序核心主要是对ASP知识点"ADODB.Stream"的应用
动易网站还使用了Dictionary对象。这两个ASP知识点我很少接触到。
由于该上传功能模块的编写比较针对整个动易网站系统,
且多文件的上传模块主要应用在提供网络硬盘的网站程序上
所以这个模块是否可通过其他网络硬盘网站获取一个简单小巧的模块程序呢
有空我会阅读一个网络硬盘的网站程序来看是否能很好地分离出多文件的上传模块
以便在一些适合的小网站中使用。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐