`
xiaoao808
  • 浏览: 43644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA上传文件进度条的实现

阅读更多

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

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

给出代码

代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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添加进去

 

代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->myProgressListener getBarListener = new myProgressListener(req);
        ServletFileUpload upload 
= new ServletFileUpload(factory);
        upload.setProgressListener(getBarListener);

 

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

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

分享到:
评论
2 楼 yxl2005play 2012-06-01  
不支持多个文件(多个<input type="file" />)吧?!
它的监听方法
public void update(long uploadedFileSize, long fileSize, int item) {}
中的三个参数分别为:已上传字节数、文件总大小、目前正在读取第几个文件。
这样是不能满足需要的,因为我需要得的不只是 目前正在读取第几个文件,而是要获取正在读取的文件的详细信息(目的是传到页面上与记录对应)效果如下:
————————————
|文件名|  进度| 状态   |
|—-—-|———|——----|
|a.txt | 100% |上传完成|
|b.txt | 45%  |正在上传|
|c.txt | 0%   |正在排除|
————————————
而不是一大堆文件(多个<input type="file" />),然后在页面下方只出现一个进度条。这种效果现在是不行的。望更多同学研究下,指教指教
1 楼 clarck_913 2010-08-06  
您好,我看了你附件里的代码

有点疑问。

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

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

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

相关推荐

    java实现大文件上传并有进度条及其代码解析

    本文将详细介绍如何使用Java实现大文件的上传并展示进度条,同时解析相关的代码实现。 1. **大文件分块上传** 大文件上传的关键在于避免一次性加载整个文件到内存,因为这可能导致内存溢出。Java中,我们可以使用`...

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

    提供的源码示例应该包含了上述所有步骤的详细实现,这对于学习和理解Java文件上传进度条的实现非常有帮助。通过实践,开发者可以进一步优化此功能,例如添加错误处理,或者使用WebSockets等技术实现实时的双向通信,...

    java文件上传进度条实现

    在Java编程中,实现文件上传进度条功能是提高用户体验的重要一环。这通常涉及到网络编程、多线程以及用户界面的实时更新。以下是一个详细的解释和实现步骤。 首先,我们需要理解文件上传的基本流程。文件上传涉及到...

    Java 文件上传带进度条源码

    在Java开发中,实现文件上传并提供进度条功能是一项常见的需求,这有助于用户了解文件传输的状态,提升用户体验。本示例中的"Java 文件上传带进度条源码"提供了一个具体的解决方案,适用于使用Tomcat7服务器和Java 7...

    extjs java 上传文件进度条

    当我们将两者结合,特别是在文件上传场景下,我们就可以实现一个动态的、用户友好的上传文件进度条。 标题"extjs java 上传文件进度条"所涉及的知识点主要涵盖以下几个方面: 1. **ExtJS组件库**:ExtJS的核心在于...

    java文件上传进度条实现基本原理

    Java 文件上传进度条实现的基本原理主要涉及到客户端与服务器之间的数据传输、多线程处理和用户界面更新。在本文中,我们将深入探讨这个过程,并提供一个简单的实现思路。 首先,了解文件上传的基本流程:用户选择...

    java上传大文件带进度条

    可自主限制上传文件的文件类型 showProgress &quot;&quot; &quot;&quot; &quot;&quot; 方法的第二个参数为限制上传文件类型 多文件时用 ‘|’ 进行分割 如: zip| rar| jif

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

    本示例“java实现带进度条的文件上传”提供了一个完整的解决方案,结合了HTML、Servlet以及swfupload库,来实现用户友好的文件上传体验,包括实时显示的进度条。 1. **HTML**:HTML是网页的基础,用于构建用户界面...

    带进度条的文件上传下载组件(JAVA)

    6. **进度条实现**:在前端,可能使用JavaScript或jQuery来实时更新进度条的值,这些值由服务器端通过AJAX请求返回。AJAX允许页面在不刷新的情况下与服务器进行异步通信。 7. **MIME类型**:在上传下载过程中,识别...

    java图片上传进度条

    在Java编程中,实现图片上传进度条功能是一项常见的需求,特别是在构建Web应用或者移动应用时。这个功能可以提供用户友好的界面,展示文件上传过程,提高用户体验。在本篇文章中,我们将深入探讨如何在Java环境下,...

    JAVA实现模拟导入数据/上传文件进度条

    在Java Web开发中,实现一个模拟数据导入或文件上传进度条功能可以极大提升用户体验,让用户在等待过程中心中有数。这个功能通常涉及到前端与后端的交互,涉及到的技术包括Servlet、JSP、jQuery和Ajax。下面我们将...

    java 文件上传支持多文件进度条预览删除

    本项目聚焦于实现一个Java Web应用,该应用具备多文件上传、进度条展示、预览以及删除等功能,这对于提升用户体验至关重要。接下来,我们将详细讨论这些知识点。 首先,我们来看“java jsp upload”。Java Server ...

    批量上传文件带进度条

    在这个场景下,"批量上传文件带进度条"主要涉及的技术点有Java编程语言、多线程、FTP文件传输协议以及用户界面(UI)的设计。 首先,Java是实现这个功能的主要编程语言。Java以其跨平台性和丰富的类库而被广泛使用...

    java jsp ajax实现上传文件进度条(详细代码和文档)

    要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 重写的解析器提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后将此数据缓存起来,前端发送异步...

    java做的一个带进度条的文件上传小项目

    本项目是一个使用Java实现的带有进度条和取消功能的文件上传示例,它利用了Apache的Commons FileUpload库来处理文件上传的过程。Commons FileUpload是Java的一个开源组件,专门用于处理HTTP请求中的多部分/表单数据...

    JAVA -jquery 文件上传带进度条

    在Java和jQuery的世界里,实现文件上传带进度条的功能是一项常见的需求,特别是在用户交互体验日益重要的今天。这个功能可以提供给用户一个实时反馈,让他们了解文件上传的状态,从而提升用户体验。接下来,我们将...

    java 进度条的实现

    以下是对Java进度条实现的详细解释: 1. **Swing和AWT库**:在Java中,我们通常使用Swing或AWT库来创建图形用户界面,这两个库提供了丰富的组件,包括JProgressBar,这就是我们实现进度条的主要工具。 2. **...

    java多线程进度条实例

    这个实例提供了一个基础的进度条实现,但在实际应用中,可能需要考虑更多因素,如线程优先级、线程池的使用、异常处理、线程间的通信等。此外,如果是在图形用户界面环境下,还需要考虑UI更新的流畅性和用户体验。...

    java开发页面进度条

    - **文件上传/下载**:显示文件传输的进度。 - **大数据处理**:在处理大量数据时,显示数据处理的进度。 - **页面加载**:对于复杂的网页,显示页面加载进度可以提升用户体验。 #### 五、扩展功能 除了基本的功能...

    Java实现上传进度条

    Java实现上传进度条==========java基础的使用规则等整理内容

Global site tag (gtag.js) - Google Analytics