关于多文件上传,以前我一直使用JQuery去动态创建文件选择组件,然后POST到服务器去。最近一段时间一直在Flash身边打滚,Flash对于多文件上传有很好的支持,在CodePrject上有一个Flash的多文件上传组件的开源项目,将其封装为ASP.NET控件,当我们在开发ASP.NET程序的时候可以像使用普通控件一样,从工具箱里拉到界面上就可以使用。
Flash采用Flex开发的,实现了选择文件和统计文件大小的功能,选择了多个文件时会动态的创建Flex组件显示到界面上,并且可以移除所选择的文件。以下是Flex项目结构图:
Flex是完全基于事件驱动的开发模型,通过自定义一个Flex的Application来实现文件的多选和文件数量以及上传文件大小的统计等功能。如上图的FileUpload就是自定义的一个组件,扩展自VBox实现了动态创建组件和处理事件。详细参考下面代码: 在Flex的App程序里就使用上面自定义的Application组件来进行设计,详细如下代码块:
.button {fontWeight:normal;}
width="400" id="fileContainer">
width="100%" label="Files to Upload" >
width="100%" visible="false">
width="275" mode="manual" visible="false" />
width="100" styleName="button"/>
width="100" styleName="button"/>
width="100" styleName="button"/>
width="100" styleName="button"/>
完成了多文件选择功能的Flash开发,现在就是想法将其生成的.swf封装到dll成为ASP.NET的服务器端控件,实现这一步很非常简单,将生成的.swf作为资源嵌入到ASP.NET的dll文件里就OK。然后自己定义一个类继承于Control,进行相应方法的重写就达到了目的,这里我们就需要重写Render()方法,在方法里通过调用资源的方法从.dll里读取出嵌入里面的.swf文件资源,然后向客户端输出嵌入flash文件(.swf)的编码就完成了。
控件中定义了多个属性,方便可视化设置控件的属性值,其中最为主要的属性为:UploadPage,该属性的作用就是指定通过那一个处理程序来处理上传文件的请求,实现请求中上传文件的保存功能。在示例程序里,我自定义了一个HttpHandler来处理上传文件的请求,实现IHttpHandler接口。程序代码如下: namespace FlashUpLoadWeb
{
///
/// 上传文件处理程序
///
public class UploadHandler : IHttpHandler, IRequiresSessionState
{
#region IHttpHandler 成员
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
//文件上传存储路径
string uploadPath = context.Server.MapPath(context.Request.Application Path + "/Upload");
for (int i = 0; i 0)
{
uploadFile.SaveAs(Path.Combine(uploadPath, uploadFile.FileName));
}
}
HttpContext.Current.Response.Write(" ");
}
#endregion
}
}
定义好了请求处理程序,这时只需要通过配置文件简单的配置就可以设置控件的处理程序页地址了,如下:
另外一个属性就是OnUploadComplete,通过它指定当文件上传完毕后调用客户端的那一个JavaScript提交更新页面状态,详细请查看示例代码。最终效果图下图:
控件还有许多需要完善的地方,比如请求处理程序那一块,上传文件的时候对文件的选择进行判断,不允许重复选择,判断选择队列中的文件在服务器上是否已经存在等等。有兴趣的朋友可以下去改善这些功能!源代码下载
发表评论
-
[13]左旋转字符串
2012-07-06 09:52 679【题目】左旋转字符串。把字符串前面的若干个字符移动到字符串 ... -
C#正则表达式------?个人分析
2012-07-06 09:45 555在正则表达式中 ?号代表:匹配前面的元字符1次或多次。 ... -
oracle的正则表达式(regular expression)
2012-07-06 09:37 623当前,正则表达式已经在很多软件中得到广泛的应用,包括Lin ... -
注册码 文件内容 CS1.6 中英文 CD KEY注册文件内容
2012-07-06 09:30 888把下面的内容保存为.reg 文件 ========== ... -
用JDBC实现数据库分页
2012-07-05 20:45 642有志者事竟成,破釜沉舟百二秦关终属楚;苦心人无不负,卧薪尝 ... -
动态创建组件、用Sender实现代码重用、ActiveX控件的使用
2012-07-03 13:43 892一、动态创建组件 ... -
超级面板皮肤及其使用
2012-07-02 10:54 593画出类似于遨游那样的最大化,最小化,关闭,还原按钮的皮肤。 ... -
flex 弹出的titleWindow 隐藏标题栏
2012-07-02 10:53 993showTopPanelTitle.titleDispla ... -
Chapter 4: About Event--Using events
2012-07-02 10:53 478在Flex中使用事件分 ... -
谈谈我对未来的想法吧
2012-07-01 00:33 529来总行珠海研发中 ... -
为什么用*? 为什么不用*?
2012-07-01 00:33 519离开RoR有一段时间了,本来不想提些负面的东西,不过JE猎 ... -
在应用中使用Ext Loader
2012-07-01 00:33 530原文:http://www.sencha.com/b ... -
虚拟机随谈:解释器,树遍历解释器,基于栈与基于寄存器,大杂烩
2012-07-01 00:33 679虚拟机随谈:解释器,树遍历解释器,基于栈与基于寄存器, ...
相关推荐
asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件...
Flash+Asp.net(PHP)文件批量上传DEMO
asp.net采用jqUploadify插件实现多文件上传,兼容IE8以上浏览器,浏览器必须支持flash
美观的上传方式,用flash设计的 asp.net上传。
asp.net 文件上传demo 框架3.5 flash与.net相结合实现文件上传功能 支持 大文件上传 文件批量上传
asp.net多文件上传一直是一个难题,现在找到一个多文件上传的Flash插件,分享给大家。文件上传带进度条,无刷新上传。
Uploadify 是一个非常好的jQuery文件上传插件,可以实现无刷新多文件上传,带进度显示,基于Flash与Ajax技术。我在Firefox 4.0.1 和 IE 9.0.8112 浏览器中使用,兼容性良好。使用许可是 MIT,免费开源且可自由地用于...
asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+flash批量上传源代码asp.net+...
flash 多文件上传控件。asp.net
asp.net多文件上传flash版,本人亲测,操作简单方便!
asp.net单文件带进度条上传,不属于任务控件,也不是flash类型的上传,完全是asp.net、js、css实现上传。源码为开发测试版,需要使用的亲需要注意修改配置文件。详见配套博客:...
Jquery 多文件上传,jquery+flash 多文件上传,界面美观, 很炫的上传组件,支持中文! 本实例经过严格测试,保证能正常使用!网上其他好多实例都不能正常运行。 uploadify是一款容量小、功能强的Js批量上传工具,...
Uploadify 是一个非常好的jQuery文件上传插件,可以实现无刷新多文件上传,带进度显示,基于Flash与Ajax技术。我在Firefox 4.0.1 和 IE 9.0.8112 浏览器中使用,兼容性良好。使用许可是 MIT,免费开源且可自由地用于...
ajax+flash无刷新同时选多文件上传(fancyupload) asp.net(C#)示例
先上传Excel、Word、PDF文件,将Excel、Word转换成PDF文件再通过工具将PDF文件转换成flash(.swf)文件,通过插件预览flash文件
asp.net 3.0 + Flash上传文件 带进度条
下载后直接使用 用flash上传 无刷新技术 自己看保证可以使用
采用Flash+ASP.NET技术实现的多文件上传源程序代码,采用C#开发完成,界面漂亮,具有进度显示控制。
[多文件上传][显进度条][JQ+FLASH+ASP.NET]