采用fileupload,现在是可以上传文件,在网上找到一个extjs的上传控件,但是只显示当前上传了多少个文件,并没有显示单个文件的上传进度。想问的是,java中,进度条的原理是什么,也就是怎么实时更新当前上传的进度(只要能够获取进度,并能返回即可,具体显示偶可以结合extjs)。
注:以下所说是针对J2SE,网页上的话,不太确定是否有效。
一般来说,上传也好,下载也好,都要用到JavaI/O。
而计算进度的原理,不就是已经传输的大小与总大小的比值嘛。
这样就简单了,就拿最基本的OutputStream来说,它的基本的写出方法为
void write(byte[] b) ,实际上写出的过程不就是通过InputStream循环读,然后OutputStream循环写嘛。
你只要事先通过File类取得文件的总大小,然后在读入或写出的循环里加一个简单的进度计算的步骤,每读取或写出一次,就将已传输大小增加b.length,求出比值,更新进度条。具体的计算间隔,可以根据循环次数或时间间隔来定。
编码上,估计要用到I/O流,File,Socket以及Thread。
因为你是使用fileupload插件,所以最好查看一下它的实现代码,已决定如何将进度功能加入其中。