基于ajax技术AJAX Upload实现的带进度条的上传例子
最近找到一 2006年底Google了一下AJAX Upload实现,结果没有发现很完整的Java实现。硕果仅存的就是TELIO公司的Pierre-Alexandre发表的《AJAX Upload progress monitor for Commons-FileUpload Example》文中提供的ajax-upload-1.0.war。
虽然上文中完成Upload工作的是Apache的Common-FileUpload组件,但在其代码中所使用的FileUpload1.1版本并没有1.2版本所提供的上传处理Listener功能,这就对检测文件上传情况造成了困难。我想正是这个原因致使Pierre-Alexandre使用了DWR+MonitoredDiskFileItem、MonitoredDiskFileItemFactory类(分别继承DiskFileItem、DiskFileItemFactory) 的方式:前者负责在web客户端进行Remote Call;后者在进行文件数据读取时统计数据总量、读取数据量、处理文件总数,并保存于Session中,以供web客户端通过DWR远程调用 UploadMonitor类的getUploadInfo方法进行轮询(Poll)。
从本人观点出发,Pierre-Alexandre实现的不足之处:
1.没有用户取消上传功能;
2.完全的DWR实现,没有使用Prototype,对于不会使用DWR的开发者来讲有一定的知识局限性,而且由于DWR的个性而造成不便将此实现集成到项目中。
Prototype+Servlet的实现:
Prototype+Servlet的Example
所以出于研究Prototype之目的,本人经过仔细思考,尝试实现了一个Prototype+Servlet的简单Example。其工作流程很简单:
1.在Form提交上传文件Field的同时,使用AJAX周期性地从Servlet轮询上传状态信息;
2.然后,根据此信息更新进度条和相关文字,及时反映文件传输状态;
3.如果用户取消上传操作,则进行相应的现场清理工作:删除已经上传的文件,在Form提交页面中显示相关信息;
4.如果上传完毕,在Form提交页面中显示已经上传的文件内容(或链接),也可以与一些AJAX SlideShow应用结合在一起。
个基于ajax上传组件的例子,下载下来布署很好用
有需要的朋友在跟贴后留下邮件地址
我会在下周末抽时间给大伙发源码及布署文件
布署都是WAR文件,放在TOMCAT就成了
------解决方案--------------------顶:
renhefeng_1983@yeah.net
------解决方案--------------------up
wl1985@163.com
------解决方案--------------------强顶
feifeirao@126.com
------解决方案--------------------gougou3250@hotmail.com
prototype与dwr没有可比性 prototype是ajax基础框架,利用prototype给一些js对象加了一些操作,同类型的还有modello这些
dwr是gui框架,doju等都是这类框架
有一点没弄明白,后发送的请求是怎么跟负责上传的那个servlet交互的.
------解决方案--------------------dswords@gmail.com
------解决方案--------------------我也想要,麻烦发一下谢谢guoht@vip.sina.com
------解决方案--------------------kidfang at 21cn.com,
抽不出时间去研究,LZ是尽量完美地实现么
------解决方案--------------------我也想要 麻烦 tongfan@163.com
------解决方案--------------------tafse@126.com
谢谢
------解决方案--------------------penghao122@126.com
顶
------解决方案--------------------ilysyt@163.com
能不能帮我再发一份...谢谢楼主
------解决方案--------------------raymond323@126.com
------解决方案--------------------laixiangh@163.com
谢谢!
------解决方案--------------------LZ 我也要
a_xiaoming@163.com
谢谢
------解决方案--------------------我也要wang123kui@gmail.com
------解决方案--------------------顶!
zhzhqi102@sina.com