最近有点闲,我们的架构师让我在文件下载时显示进度条,咳咳,自从组里来了前端妹纸后,好久没写前端代码了。。。
架构师推荐的用监听器(链接找不到了。。。),实现得有点复杂,我没太看懂。继续百度,看到了“在下载时计算进度,然后把进度放到session中,另外写一个请求取session中的进度”,听起来简单可行,开始ctrl+C。
后端代码1:把流输出到servlet中
outputStream = response.getOutputStream();
int len = 0;
//将进度放到session中,通过前端的定时请求获取进度
double nowLen = 0;
int percent;
byte[] buf = new byte[4 * 1024];
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
nowLen+=len;
percent = new Double(nowLen/hhs.getContentLength()*100).intValue();
// SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
// System.out.println("----------------------------长度为:"+hhs.getContentLength()+" ,当前长