本文实例实现文件上传的进度显示,我们先看看都有哪些问题我们要解决。

1 上传数据的处理进度跟踪

2 进度数据在用户页面的显示

就这么2个问题,

第一个问题,主要是组件的选择

必须支持数据处理侦听或通知的组件。当然,我肯定只用我自己的组件啦。基本原理是

1 使用request.getContentLength() 读取到处理数据的总长度,注意这个长度不等于文件的长度,因为Base64等编码会增加数据量,如果超过了允许的长度,直接返回-1;

2 在每读取一部分数据时(比如一行,或者64K,或者你自定义的字节数),将读取的字节数通知我们的进度跟踪程序。我取名为 UploadListener代码如下

/*

* 处理附件上传的通知。

* 各位可以继承这个类,来实现自己的特殊处理。

*

* @author 赵学庆 www.java2000.net

*/

public class UploadListener ... {

// 调试模式将在控制台打印出一些数据

private boolean debug;

// 总数据字节数

private int total;

// 当前已经处理的数据字节数

private int totalCurrent = 0 ;

// 延迟,用来调试用,免得速度太快,根本卡看不到进度

private int delay = 0 ;

/** */ /**

* 处理数据通知的方法。

* 保存已经处理的数据。并且在一定的比例进行延迟。默认每1%

* 如果不需用延迟,可以删掉内部的代码,加快速度。

*

* @param size 增加的字节数

*/

public void increaseTotalCurrent( long size) ... {

this .totalCurrent += size;

try ... {

currentRate = totalCurrent * 100 / total;

if (currentRate > lastRate) ... {

if (delay > 0 ) ... {

Thread.sleep(delay);

}

if (debug) ... {

System.out.println( " rate= " + totalCurrent + " / " + total + " / " + (totalCurrent * 100 / total));

}

lastRate = currentRate;

}

} catch (Exception e) ... {

e.printStackTrace();

}

}

/** */ /**

* 读取全部自己数

*

* @return

*/

public int getTotal() ... {

return total;

}

/** */ /**

* 读取已经处理的字节数

*

* @return

*/

public int getTotalCurrent() ... {

return totalCurrent;

}

private long lastRate = 0 ;

private long currentRate = 0 ;

public int getDelay() ... {

return delay;

}

public void setDelay( int delay) ... {

this .delay = delay;

}

public void setTotal( int total) ... {

this .total = total;

}

public boolean isDebug() ... {

return debug;

}

public void setDebug( boolean debug) ... {

this .debug = debug;

}

}

你学会了吗?

文件上传 java 进度条_Java如何实现动态显示文件上传进度条相关推荐

  1. java内存 海子_Java并发编程:从根源上解析volatile关键字的实现

    Java并发编程:volatile关键字解析 1.解析概览 内存模型的相关概念 并发编程中的三个概念 Java内存模型 深入剖析volatile关键字 使用volatile关键字的场景 2.内存模型的 ...

  2. java标量替换_JAVA逃逸分析、栈上分配、标量替换、同步消除

    一.逃逸分析 逃逸分析是编译语言中的一种优化分析,而不是一种优化的手段.通过对象的作用范围的分析,为其他优化手段提供分析数据从而进行优化. 逃逸分析包括: 全局变量赋值逃逸 方法返回值逃逸 实例引用发 ...

  3. 服务器 上传文件进度,Java动态显示文件上传进度实现代码

    本文实例实现文件上传的进度显示,我们先看看都有哪些问题我们要解决. 1 上传数据的处理进度跟踪 2 进度数据在用户页面的显示 就这么2个问题, 第一个问题,主要是组件的选择 必须支持数据处理侦听或通知 ...

  4. java上传音频到服务器_Java 客户端向服务端上传mp3文件数据的实例代码

    客户端: package cn.itcast.uploadpicture.demo; import java.io.BufferedInputStream; import java.io.FileIn ...

  5. java struts2 上传图片_Java框架Struts2实现图片上传功能

    Struts 2 框架为处理文件上传提供了内置支持,它使用"在 HTML 中基于表单的文件上传".当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 Action 类 ...

  6. java ftp文件大小_java如何获得ftp服务器上指定文件的大小

    我想获得ftp服务器上指定文件的大小 以及下载过程中文件的已完成下载的大小 求教 这个是我写的方法 code:: public static boolean downLoadFtp(String ft ...

  7. java applet 缺陷_Java Applet在最新JRE上的奇怪性能行为(7.55)

    我们使用来自签名提供商的一些专有小程序来签署一些 XML.当我们使用JRE 6u37 applet运行没有问题 – 运行速度非常快,从不冻结.但是当我们将JRE更新为7u55或更新时,它经常开始挂起. ...

  8. java实验总结_Java实验总结——初学(上)

    实验一 集合(一) [实验目的与要求] 1.了解Java集合类的概念: 2.掌握常用集合类的使用方法和技巧,并能应用到实际操作中. [实验内容] 1.请编写一个程序,要求如下:1)首先生成10个1至1 ...

  9. java自动填充_java 如何自动填充网页上的用户名和密码?

    展开全部 java 自动填充网页上的用户名和密码有两种方法: 方法一.在input 标签里面的 value属性赋值即可,如32313133353236313431303231363533e78988e ...

最新文章

  1. Linux进程间通信——管道
  2. php5.5 sqlserver 2012,PHP连接SQLSERVER2012
  3. 小白的算法初识课堂(part4)--快速排序
  4. html 输入框变红色,input输入框 输入错误时,点击注册按钮,输入框的边框变成红色,重新输入时,边框颜色恢复原来的,同时错误提示消失?...
  5. Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)
  6. 介绍计算机的英文文章,计算机方面的英语资料,介绍一些计算机的英语短文,有兴趣的可以看...
  7. 联想高校AI精英挑战赛总冠军出炉!助力中国迎来智能变革
  8. Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现
  9. linux 显存占用内存,Linux服务器内存、CPU、显卡、硬盘使用情况查看
  10. Ubuntu下mysql可视化_ubuntu上mysql有可视化界面吗 ubuntu mysql 图形界面
  11. 计算机网络知识点总结
  12. java的小于等于符号怎么打_「小于符号」mybatis的一些特殊符号标识(大于,小于,等于,不等于) - seo实验室...
  13. 2021年王道数据结构课后题
  14. MacOS从清空的废纸篓找回被删除文件的方法
  15. 2018之后的Unity3d制作AR教程
  16. 功能安全-三种确认措施报告之安全评估报告学习记录
  17. 网易传媒Go语言探索
  18. java http请求发送unicode_c++ 使用httpclient获取网页及utf8与unicode之间转码
  19. 数值分析笔记_3 埃尔米特插值
  20. 前端性能优化:1.什么是前端性能优化

热门文章

  1. SQL SERVER数据库datediff函数引发的性能问题
  2. 在Windows上安装Bochs虚拟机运行XP
  3. 【leetcode】最接近的三数之和,python实现
  4. uniapp 常用基本样式base.css
  5. T:玻璃瓶样品强度测试
  6. EndNote导出文献为Excel文件
  7. 计算机的优势和劣势_马上就要计算机二级考试了,它的含金量你还不知道?
  8. DP总结 ——QPH
  9. 基于jsp的教学实验管理系统
  10. 极度缺人:500-800元/天,大学生优先,时间自由可日结!!