文件上传 java 进度条_Java如何实现动态显示文件上传进度条
本文实例实现文件上传的进度显示,我们先看看都有哪些问题我们要解决。
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如何实现动态显示文件上传进度条相关推荐
- java内存 海子_Java并发编程:从根源上解析volatile关键字的实现
Java并发编程:volatile关键字解析 1.解析概览 内存模型的相关概念 并发编程中的三个概念 Java内存模型 深入剖析volatile关键字 使用volatile关键字的场景 2.内存模型的 ...
- java标量替换_JAVA逃逸分析、栈上分配、标量替换、同步消除
一.逃逸分析 逃逸分析是编译语言中的一种优化分析,而不是一种优化的手段.通过对象的作用范围的分析,为其他优化手段提供分析数据从而进行优化. 逃逸分析包括: 全局变量赋值逃逸 方法返回值逃逸 实例引用发 ...
- 服务器 上传文件进度,Java动态显示文件上传进度实现代码
本文实例实现文件上传的进度显示,我们先看看都有哪些问题我们要解决. 1 上传数据的处理进度跟踪 2 进度数据在用户页面的显示 就这么2个问题, 第一个问题,主要是组件的选择 必须支持数据处理侦听或通知 ...
- java上传音频到服务器_Java 客户端向服务端上传mp3文件数据的实例代码
客户端: package cn.itcast.uploadpicture.demo; import java.io.BufferedInputStream; import java.io.FileIn ...
- java struts2 上传图片_Java框架Struts2实现图片上传功能
Struts 2 框架为处理文件上传提供了内置支持,它使用"在 HTML 中基于表单的文件上传".当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 Action 类 ...
- java ftp文件大小_java如何获得ftp服务器上指定文件的大小
我想获得ftp服务器上指定文件的大小 以及下载过程中文件的已完成下载的大小 求教 这个是我写的方法 code:: public static boolean downLoadFtp(String ft ...
- java applet 缺陷_Java Applet在最新JRE上的奇怪性能行为(7.55)
我们使用来自签名提供商的一些专有小程序来签署一些 XML.当我们使用JRE 6u37 applet运行没有问题 – 运行速度非常快,从不冻结.但是当我们将JRE更新为7u55或更新时,它经常开始挂起. ...
- java实验总结_Java实验总结——初学(上)
实验一 集合(一) [实验目的与要求] 1.了解Java集合类的概念: 2.掌握常用集合类的使用方法和技巧,并能应用到实际操作中. [实验内容] 1.请编写一个程序,要求如下:1)首先生成10个1至1 ...
- java自动填充_java 如何自动填充网页上的用户名和密码?
展开全部 java 自动填充网页上的用户名和密码有两种方法: 方法一.在input 标签里面的 value属性赋值即可,如32313133353236313431303231363533e78988e ...
最新文章
- Linux进程间通信——管道
- php5.5 sqlserver 2012,PHP连接SQLSERVER2012
- 小白的算法初识课堂(part4)--快速排序
- html 输入框变红色,input输入框 输入错误时,点击注册按钮,输入框的边框变成红色,重新输入时,边框颜色恢复原来的,同时错误提示消失?...
- Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)
- 介绍计算机的英文文章,计算机方面的英语资料,介绍一些计算机的英语短文,有兴趣的可以看...
- 联想高校AI精英挑战赛总冠军出炉!助力中国迎来智能变革
- Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现
- linux 显存占用内存,Linux服务器内存、CPU、显卡、硬盘使用情况查看
- Ubuntu下mysql可视化_ubuntu上mysql有可视化界面吗 ubuntu mysql 图形界面
- 计算机网络知识点总结
- java的小于等于符号怎么打_「小于符号」mybatis的一些特殊符号标识(大于,小于,等于,不等于) - seo实验室...
- 2021年王道数据结构课后题
- MacOS从清空的废纸篓找回被删除文件的方法
- 2018之后的Unity3d制作AR教程
- 功能安全-三种确认措施报告之安全评估报告学习记录
- 网易传媒Go语言探索
- java http请求发送unicode_c++ 使用httpclient获取网页及utf8与unicode之间转码
- 数值分析笔记_3 埃尔米特插值
- 前端性能优化:1.什么是前端性能优化