小二哥's blog

----zhangzs8896(小二)

导航

一个文件上传与下载的UserControl

Posted on 2005-10-16 17:37  小二哥  阅读(749)  评论(1)    收藏  举报

说明:
首先建立一个数据表: UpLoadTb  结构如下:

字段 描述
ID identity列,作为记录的唯一表示
ProcInstID 流程实例ID号
EmpID 上传人ID
FileName 文件名称
UpLoadTime 文件上传时间
FilePath 文件所在的物理路径(含文件名)

另外实际我们需要上传人的中文姓名. 这里建一个对应表: Sys_Employee
字段 描述
EmpID 用户ID
EmpName 用户中文姓名

Web.config文件下<appSettings>节点下增加:

<!-- 项目所在的虚拟路径 -->
        
<add key="Path" value="http://localhost:8081/camc.workflow.businessflow/"></add>
        
<!-- 上传文件的文件夹名称-->
        
<add key="UpFileFolder" value="Temp"></add>
        
        
<!-- 允许上传的文件类型-->
        
<add key="UpFileType" value=".gif,.jpg,.jpeg,.bmp,.png,.rar,.doc,.ppt,.zip,.xls,.dbm,.txt,.htm,"></add>
        
<!-- 允许上传的文件的大小(单位是M)-->
        
<add key="UpFileMaxSize" value="20">

原则是获取当前项目的物理路径,并创建文件夹Temp. 程序中会在Temp下按参数(我这里是流程名)建立文件夹,再按日期建文件夹(...Temp\流程名\日期\), 上传的文件按此分类存储.                         
上传时更改文件名为随机数(目的是防止其他用户恶意破坏文件).
下载时根据数据库中已存储的文件物理路径以及文件名下载到客户端.
同时还可以根据向这个UserControl传递的参数显示"删除"按钮以实现删除功能(物理文件以及数据记录)
UserControl源文件: UpLoadFile.rar
测试文件aspx:
声名UserControl :protected camc.workflow.businessflow.Files.UpLoadFile UpLoadFile;    
Page_Load内传递参数:

为文件上传控件提供所需参数

 注意:在实际的项目应用中我们要在模式窗口下使用,不知道什么原因始终下载不了文件.
最后使用window.open解决了问题.
项目源文件UpLoad_Load_File,可能这个才是大家需要的东西吧,希望对大家有所帮助.