论坛首页 Java企业应用论坛

struts2+dwr上传带进度条监控

浏览 8984 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-12-08  

struts2+dwr上传带进度条监控 具体功能就实现在源码中都有注释 我就不在这里多介绍了 其实网上也有很多这类功能的源码 和介绍 不过我还是弄了N久才弄明白 然后经理解自己实现了一下 主要是做好页面的dwr方法调用的递归调用方法 按一秒钟循环访问一个方法去取上传进度的相关数据显示到页面上就行了 不过目前没有做上传中途取消功能和断电续传 也没有什么思路和时间去研究了 有时间再说吧 或者谁会弄得话 可以传上来一起研究研究 呵呵

   发表时间:2010-12-08  
用 swfupload 来做,非常简单,只需要写几个javascript callback方法就行了。

强烈推荐  swfupload.org, 

不是广告。 因为它是开源的。跟我也没关系,我只是用过觉得不错而已。
1 请登录后投票
   发表时间:2010-12-09  
用flash的FileReference替代html的file上传确实是一个非常好的选择,可以限制文件上传类型,同时不用使用定时去服务器上查看文件上传进度。FileReference的progress事件能够直接反映上传进度,如果在加上as调用js那就是一个完美上传框架了
0 请登录后投票
   发表时间:2010-12-10  
递归???递归!~!!!!
0 请登录后投票
   发表时间:2010-12-10  
zjiaohuang 写道
用flash的FileReference替代html的file上传确实是一个非常好的选择,可以限制文件上传类型,同时不用使用定时去服务器上查看文件上传进度。FileReference的progress事件能够直接反映上传进度,如果在加上as调用js那就是一个完美上传框架了

flash的FileReference返回的进度好像是本地发送的比例吧?但是实际使用中,用户想要看到的应该是服务端接收到的百分比...
0 请登录后投票
   发表时间:2011-01-30  
测试过后,发现这个好像是在客户端显示“正在获取数据...”时是在上传文件(这个在服务器端的文件为临时文件),当上传的文件上传为临时文件后,再转存临时文件时客户端才会显示进度条,而这个进度条应该只是转存进度条了。所以好像与原始要求不符合,不知楼主注意到没有。而且我弄了半天没有解决,希望楼主可以帮忙解决一下。
0 请登录后投票
   发表时间:2011-03-31   最后修改:2011-03-31
yzjdt 写道
测试过后,发现这个好像是在客户端显示“正在获取数据...”时是在上传文件(这个在服务器端的文件为临时文件),当上传的文件上传为临时文件后,再转存临时文件时客户端才会显示进度条,而这个进度条应该只是转存进度条了。所以好像与原始要求不符合,不知楼主注意到没有。而且我弄了半天没有解决,希望楼主可以帮忙解决一下。


恩 做出来的时候我就注意到了 我一开始用的是在struts2上传时(这个在服务器端的文件为临时文件)时做的实时监控,不过发现会出现当服务器端的临时文件转存为上传文件时,页面呆滞的问题,所以现在又改成现在这个方案了,然后写一个正在获取数据中,来做友好提示.觉得这样做比上传完之后呆滞半天好些,因为我不能在上传完了以后,在提示他转换数据中,这样有点不友好,也不容易让用户看明白.

这个问题的主要原因就是因为strtus2的获取数据临时文件然后再转换成正式文件的这个特性造成的,这个特性其实是很恶心的一个事,个人觉得这个动作相当于在服务器上做了个没意义的动作

我也有相应的临时解决办法 不过我觉得也不太实用所以就没弄 就是在struts2上传临时文件时进行监听,这里需要注意的是,必须要从写里面filterUpload上传插件的相关类的方法中去自己加一个监听,这个的实现方式可以从网上找到,不过缺陷依然是,当你上传时确实会直接显示上传的进度了,不过当struts2的临时文件在转成实际文件时还是会等很长时间.

我后来想的方法是,这两个方式都实现,然后第一个方法用上传时的一个时间无限转动图片,然后在下面做一个监听百分比,标注为获取文件.

然后获取成功以后,在用我现在的那个监听去监听临时文件转真正文件,监听图片是进度条形式,然后说叫上传,这样就既能解决上传时和临时文件转换时的等待时间停止时间过长,又能随时告知用户内部文件上传进度,不让用户不明原因等待

大致就是这个想法,具体实现可以在研究,这两个方法我都单独实现过,两个功能的实现是没问题的.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics