java进度条_JAVA上传文件进度条的实现

Myth丶恋晨 2022-11-02 00:55 111阅读 0赞

很久不在这里发帖子了,最近在家闲来无事,想到转视频的那东西又要做了,遂翻出以前的帖子,看到一年前丰哥让我做一下文件上传的进度条….额~~那就做一下吧。

东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以实现实时更新已上传文件的大小,有了这个还说什么呢?

给出代码

ContractedBlock.gif

ExpandedBlockStart.gif代码packagelc.progress;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importlc.progress.vo.fileUploadStatus;importorg.apache.commons.fileupload.ProgressListener;publicclassmyProgressListenerimplementsProgressListener {privateHttpSession session;publicmyProgressListener(HttpServletRequest req) {

session=req.getSession();

fileUploadStatus status=newfileUploadStatus();

session.setAttribute(“status”, status);

}/*pBytesRead 到目前为止读取文件的比特数

* pContentLength 文件总大小

* pItems 目前正在读取第几个文件

* 只要在session中实时保存文件上传的状态(这里我用fileUploadStatus类来封装)*/publicvoidupdate(longpBytesRead,longpContentLength,intpItems) {//TODO Auto-generated method stubfileUploadStatus status=(fileUploadStatus) session.getAttribute(“status”);

status.setPBytesRead(pBytesRead);

status.setPContentLength(pContentLength);

status.setPItems(pItems);

}

}

然后在上传得servlet或action中加入这样一段代码,就可以把自定义的progressListener添加进去

ContractedBlock.gif

ExpandedBlockStart.gif代码myProgressListener getBarListener=newmyProgressListener(req);

ServletFileUpload upload=newServletFileUpload(factory);

upload.setProgressListener(getBarListener);

最后就是通过js来不断的访问另一个servlet来实时返回上传状态就可以了,限于篇幅我就不再贴代码了,有兴趣的读者可以自己下载来看。

代码下载(目标另存为就行了)

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-08-03 19:46

浏览 4655

评论

2 楼

yxl2005play

2012-06-01

不支持多个文件(多个)吧?!

它的监听方法

public void update(long uploadedFileSize, long fileSize, int item) {}

中的三个参数分别为:已上传字节数、文件总大小、目前正在读取第几个文件。

这样是不能满足需要的,因为我需要得的不只是 目前正在读取第几个文件,而是要获取正在读取的文件的详细信息(目的是传到页面上与记录对应)效果如下:

————————————

|文件名| 进度| 状态 |

|—-—-|———|————|

|a.txt | 100% |上传完成|

|b.txt | 45% |正在上传|

|c.txt | 0% |正在排除|

————————————

而不是一大堆文件(多个),然后在页面下方只出现一个进度条。这种效果现在是不行的。望更多同学研究下,指教指教

1 楼

clarck_913

2010-08-06

您好,我看了你附件里的代码

有点疑问。

第一,web.xml文件中没有注册监听器,您的代码中给出了实现ProgressListener接口的类,这个实现类(也就是myProgressListener)里的update方法什么时候会被调用?

第二,您是否运行过这个应用程序

我运行了,文件上传成功 但进度条没有按照预想的变化,所以才来问一下。

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java实现进度

    Java实现进度条 在Java编程中,经常需要显示进度条来表示任务的完成进度。进度条是一种直观的方式,可以让用户了解到程序运行的状态。本文将介绍如何使用Java实现一个简单的

    相关 ajax 文件进度

    一:方案分析        基于浏览器的文件上传,为了有更好的用户体验,我们一般就设置一个旋转的图标,旋转的图标无法实时的监控文件上传情况。所以我们将实现一个如何实时的监控