- 浏览: 43644 次
- 性别:
- 来自: 北京
最新评论
-
yxl2005play:
不支持多个文件(多个<input type=&q ...
JAVA上传文件进度条的实现 -
clarck_913:
您好,我看了你附件里的代码
有点疑问。
第一,web.xm ...
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);
}
}
<!--<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);
<!--<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" />),然后在页面下方只出现一个进度条。这种效果现在是不行的。望更多同学研究下,指教指教
它的监听方法
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方法什么时候会被调用?
第二,您是否运行过这个应用程序
我运行了,文件上传成功 但进度条没有按照预想的变化,所以才来问一下。
有点疑问。
第一,web.xml文件中没有注册监听器,您的代码中给出了实现ProgressListener接口的类,这个实现类(也就是myProgressListener)里的update方法什么时候会被调用?
第二,您是否运行过这个应用程序
我运行了,文件上传成功 但进度条没有按照预想的变化,所以才来问一下。
发表评论
-
Hibernate主键生成方式(转)
2008-01-29 22:05 5401) assigned 主键由外部程序负责生成,无需Hibe ... -
实现JSP页面自动跳转
2008-01-30 22:01 837HTML里增加: <meta http-e ... -
JAVA中的接口和抽象类(转)
2008-03-11 17:31 650在面向对象的概念中, ... -
JAVA错误处理大集合
2008-03-15 17:19 7690、 需要标识符 a) 不在 ... -
强!!!
2008-04-01 17:51 686Java视频教程 孙鑫Java无难事 (全12CD) http ... -
字符转换 dos 命令 JDK自带的native2ascii工具完全揭密
2008-07-14 17:27 854背景:在做Java开发的时 ... -
Acegi安全系统的配置
2008-07-17 00:42 682Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用 ... -
ACEGI配置总结(1)
2008-07-18 18:39 730Acegi配置总结 1、 在web.xml中配置conte ... -
关于Struts处理异常框架的小例子
2008-07-30 17:15 750下午搞了一下Struts处理异常的框架,不错,确实很 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 699前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ... -
关于Struts的Token
2008-08-01 12:07 681请求有效性处理,使用令牌可以有效的防止重复提交。 protec ... -
六大代码问题检验你的JAVA知识(转)
2008-08-01 15:57 733你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了J ... -
Spring Security连接数据库查询实例
2008-08-04 00:46 897经过若干天断断续续地研究,终于做出了第一个sprin ... -
JAVA md5、SHA加密类
2008-08-04 20:25 861Code<!--<br /><br ... -
Hibernate获取数据方式与缓存使用
2008-08-16 11:03 670Hibernate获取数据的方式有不同的几种,其与缓存结合使用 ... -
使用AjaxTags实现自动完成
2008-09-22 09:42 1120最近搞的一个通讯录想要加一个Ajax的自动完成功能, ... -
Struts2&Jquery 新闻发布
2009-03-16 17:48 1009又一个新闻发布......比以前的更加人性化了,用到了Stru ... -
JAVA实现精确的加减乘除
2009-05-20 17:13 1129package lc.util; import java.ma ... -
利用commonsfileupload+ffmpeg+mencoder完成视频的上传与转换(2)
2009-08-04 17:45 954这两天完善了一下视频 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 916前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ...
相关推荐
本文将详细介绍如何使用Java实现大文件的上传并展示进度条,同时解析相关的代码实现。 1. **大文件分块上传** 大文件上传的关键在于避免一次性加载整个文件到内存,因为这可能导致内存溢出。Java中,我们可以使用`...
提供的源码示例应该包含了上述所有步骤的详细实现,这对于学习和理解Java文件上传进度条的实现非常有帮助。通过实践,开发者可以进一步优化此功能,例如添加错误处理,或者使用WebSockets等技术实现实时的双向通信,...
在Java编程中,实现文件上传进度条功能是提高用户体验的重要一环。这通常涉及到网络编程、多线程以及用户界面的实时更新。以下是一个详细的解释和实现步骤。 首先,我们需要理解文件上传的基本流程。文件上传涉及到...
在Java开发中,实现文件上传并提供进度条功能是一项常见的需求,这有助于用户了解文件传输的状态,提升用户体验。本示例中的"Java 文件上传带进度条源码"提供了一个具体的解决方案,适用于使用Tomcat7服务器和Java 7...
当我们将两者结合,特别是在文件上传场景下,我们就可以实现一个动态的、用户友好的上传文件进度条。 标题"extjs java 上传文件进度条"所涉及的知识点主要涵盖以下几个方面: 1. **ExtJS组件库**:ExtJS的核心在于...
Java 文件上传进度条实现的基本原理主要涉及到客户端与服务器之间的数据传输、多线程处理和用户界面更新。在本文中,我们将深入探讨这个过程,并提供一个简单的实现思路。 首先,了解文件上传的基本流程:用户选择...
可自主限制上传文件的文件类型 showProgress "" "" "" 方法的第二个参数为限制上传文件类型 多文件时用 ‘|’ 进行分割 如: zip| rar| jif
本示例“java实现带进度条的文件上传”提供了一个完整的解决方案,结合了HTML、Servlet以及swfupload库,来实现用户友好的文件上传体验,包括实时显示的进度条。 1. **HTML**:HTML是网页的基础,用于构建用户界面...
6. **进度条实现**:在前端,可能使用JavaScript或jQuery来实时更新进度条的值,这些值由服务器端通过AJAX请求返回。AJAX允许页面在不刷新的情况下与服务器进行异步通信。 7. **MIME类型**:在上传下载过程中,识别...
在Java编程中,实现图片上传进度条功能是一项常见的需求,特别是在构建Web应用或者移动应用时。这个功能可以提供用户友好的界面,展示文件上传过程,提高用户体验。在本篇文章中,我们将深入探讨如何在Java环境下,...
在Java Web开发中,实现一个模拟数据导入或文件上传进度条功能可以极大提升用户体验,让用户在等待过程中心中有数。这个功能通常涉及到前端与后端的交互,涉及到的技术包括Servlet、JSP、jQuery和Ajax。下面我们将...
本项目聚焦于实现一个Java Web应用,该应用具备多文件上传、进度条展示、预览以及删除等功能,这对于提升用户体验至关重要。接下来,我们将详细讨论这些知识点。 首先,我们来看“java jsp upload”。Java Server ...
在这个场景下,"批量上传文件带进度条"主要涉及的技术点有Java编程语言、多线程、FTP文件传输协议以及用户界面(UI)的设计。 首先,Java是实现这个功能的主要编程语言。Java以其跨平台性和丰富的类库而被广泛使用...
要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 重写的解析器提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后将此数据缓存起来,前端发送异步...
本项目是一个使用Java实现的带有进度条和取消功能的文件上传示例,它利用了Apache的Commons FileUpload库来处理文件上传的过程。Commons FileUpload是Java的一个开源组件,专门用于处理HTTP请求中的多部分/表单数据...
在Java和jQuery的世界里,实现文件上传带进度条的功能是一项常见的需求,特别是在用户交互体验日益重要的今天。这个功能可以提供给用户一个实时反馈,让他们了解文件上传的状态,从而提升用户体验。接下来,我们将...
以下是对Java进度条实现的详细解释: 1. **Swing和AWT库**:在Java中,我们通常使用Swing或AWT库来创建图形用户界面,这两个库提供了丰富的组件,包括JProgressBar,这就是我们实现进度条的主要工具。 2. **...
这个实例提供了一个基础的进度条实现,但在实际应用中,可能需要考虑更多因素,如线程优先级、线程池的使用、异常处理、线程间的通信等。此外,如果是在图形用户界面环境下,还需要考虑UI更新的流畅性和用户体验。...
- **文件上传/下载**:显示文件传输的进度。 - **大数据处理**:在处理大量数据时,显示数据处理的进度。 - **页面加载**:对于复杂的网页,显示页面加载进度可以提升用户体验。 #### 五、扩展功能 除了基本的功能...
Java实现上传进度条==========java基础的使用规则等整理内容