欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java上传文件进度条的实现方法(附demo源码下载)

程序员文章站 2024-03-07 20:45:19
本文实例讲述了java上传文件进度条的实现方法。分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressli...

本文实例讲述了java上传文件进度条的实现方法。分享给大家供大家参考,具体如下:

东西很简单,主要用到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来实时返回上传状态就可以了,限于篇幅我就不再贴代码了,有兴趣的读者可以自己下载来看。

完整实例代码点击此处本站下载

希望本文所述对大家java程序设计有所帮助。