免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4215 | 回复: 0

struts2进度条(三) [复制链接]

论坛徽章:
0
发表于 2010-01-13 21:14 |显示全部楼层
Struts 2/WebWork自带的JakartaMultiPartRequest是没设ProgressListener的,因此,要用默认的拦截器实现文件上传进度,就需要使用自己的MultiPartRequest解析器,在里面加上
upload.setProgressListener(progressListener);
为了使用我们自己的解析器,可以在struts.xml里配置:


很久不在这里发帖子了,最近在家闲来无事,想到转视频的那东西又要做了,遂翻出以前的帖子,看到一年前丰哥让我做一下文件上传的进度条....额~~那就做一下吧。
东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以实现实时更新已上传文件的大小,有了这个还说什么呢?
给出代码
代码
package lc.progress;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import lc.progress.vo.fileUploadStatus;
import org.apache.commons.fileupload.ProgressListener;
public class myProgressListener implements ProgressListener {
    private HttpSession session;
    public myProgressListener(HttpServletRequest req) {
        session=req.getSession();
        fileUploadStatus status = new fileUploadStatus();
        session.setAttribute("status", status);
    }
    /* pBytesRead  到目前为止读取文件的比特数
     * pContentLength 文件总大小
     * pItems 目前正在读取第几个文件
     * 只要在session中实时保存文件上传的状态(这里我用fileUploadStatus类来封装)
     */
    public void update(long pBytesRead, long pContentLength, int pItems) {
        // TODO Auto-generated method stub
        fileUploadStatus status = (fileUploadStatus) session.getAttribute("status");
        status.setPBytesRead(pBytesRead);
        status.setPContentLength(pContentLength);
        status.setPItems(pItems);
    }
}
然后在上传得servlet或action中加入这样一段代码,就可以把自定义的progressListener添加进去
代码
myProgressListener getBarListener = new myProgressListener(req);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setProgressListener(getBarListener);
最后就是通过js来不断的访问另一个servlet来实时返回上传状态就可以了,限于篇幅我就不再贴代码了,有兴趣的读者可以自己下载来看。
jquery与dwr的util.js冲突,去掉对util.js的引用。


原文地址:
http://tieba.baidu.com/f?kz=317091964
http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
http://topic.csdn.net/u/20081113/11/0975cefe-d904-4a8b-8e8d-7ce052e3bad0.html


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/110188/showart_2148130.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP