- 浏览: 132684 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yaoweinan:
没有.....
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
马文涛:
我也发现这个问题了,你找到解决办法了吗?
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
coding1688:
博主辛苦了,也可以参考一下这篇文章:四步轻松搞定瀑布流布局ht ...
瀑布流布局个人实现 -
yaoweinan:
嘿嘿,那个只是最笨的办法,实际上是不行的,现在一般的都有sw ...
文件上传(无刷新,带进度条,带网速)下载完整 -
javazzu:
我为啥不行呢
文件上传(无刷新,带进度条,带网速)下载完整
*该程序主要解决带进度,无刷新,带网速计算的上传功能,简单明了,不过是本人愚拙的做法,若有更好的做法介绍介绍
java文件
package com.servlet; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.ProgressListener; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class Upload extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("application/xml"); final PrintWriter out=resp.getWriter(); XMLOutputter pw=new XMLOutputter(Format.getPrettyFormat().setEncoding("iso-8859-1")); Document doc=(Document)req.getSession().getAttribute("msg"+req.getSession().getId())==null?new Document():(Document)req.getSession().getAttribute("msg"+req.getSession().getId()); pw.output(doc,out); System.out.println(req.getSession().getAttribute("msg"+req.getSession().getId())); } public void doPost(final HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); final PrintWriter out=response.getWriter(); ServletFileUpload upload = new ServletFileUpload(); upload.setSizeMax(100*1024*1024); ProgressListener progressListener = new ProgressListener(){ long lastBytes=0; long lastTime=System.currentTimeMillis(); public void update(long pBytesRead, long pContentLength, int pItems) { if (pContentLength == -1) { System.out.println("So far, " + pBytesRead + " bytes have been read."); } else { long stepByte=(pBytesRead-lastBytes)/1024; String bit=""; double stepTime=0f; stepTime=(double) ((System.currentTimeMillis()-lastTime)/1000.0); bit=Math.round(stepByte/stepTime)+"KB/S"; Document doc=new Document(); Element root=new Element("root"); doc.addContent(root); Element file=new Element("file"); file.setAttribute("id",pItems+""); file.setAttribute("uploadBytes", pBytesRead+""); file.setAttribute("totalBtyes", pContentLength+""); file.setAttribute("bit", bit); root.addContent(file); request.getSession().setAttribute("msg"+request.getSession().getId(), doc); } } }; upload.setProgressListener(progressListener); try { FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); InputStream stream = item.openStream(); if (item.isFormField()) { } else { int tmp=item.getName().lastIndexOf("\\")==-1?0:item.getName().lastIndexOf("\\"); if(item.getName().substring(tmp)!=null&&!item.getName().substring(tmp).equals("")){ String fileName="D:\\upload\\"+item.getName().substring(tmp); FileOutputStream tempFile=new FileOutputStream(fileName); int buf; while((buf=stream.read())!=-1){ tempFile.write(buf); tempFile.flush(); } tempFile.close(); } } }} catch (FileUploadException e) { e.printStackTrace(); } out.close(); } }
jsp文件
<%@ page language="java" contentType="text/html; charset=gb2312" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.5.1.min.js"></script> <title>带进度的文件上传</title> </head> <body> <div style="width:500px; margin:0 auto;"> <form action="servlet/Upload" id="form1" name="form1" encType="multipart/form-data" method="post" target="hidden_frame" onsubmit="checkUpload();"> <input type="file" id="file1" name="file1" style="width:450"/> <input type="submit" value="上传文件"/> </form> </div> <iframe name="hidden_frame" id="hidden_frame" style="display: none;"></iframe> <div style="width: 500px;height:80px;margin:auto;text-align: center;"> <div id="msg" style="float: right;"></div> <div id="process" style="background-image: url(progress-bg.gif);width: 0px;height: 20px;background-repeat: repeat-x"></div> </div> </body> </html> <script type="text/javascript"> var startTimer; function checkUpload(){ startTimer=setInterval(function(){ $.ajax({url: "servlet/Upload?ran="+Math.random(),dataType :"xml",success:callback}); },1000); } function callback(msg) { var node=$(msg).find("file"); var uploadBytes=parseInt(node.attr("uploadBytes")); var totalBtyes=parseInt(node.attr("totalBtyes")); var bit=node.attr("bit"); var percentage=Math.round(uploadBytes/totalBtyes*100); tmp="已上传"+percentage+"% 网速:"+bit; var wid=parseInt(uploadBytes/totalBtyes)*300; $("#process").css("width",percentage+"%"); $("#msg").html("<font color=red>"+tmp+"</font>"); if(percentage==100){ if(startTimer!=null){ clearInterval(startTimer); } } } </script>
另外需要jdom.jar 包 和jquery.js
实现无刷新带进度条上传文件(可测网速)
- upload.rar (369.4 KB)
- 下载次数: 142
评论
2 楼
yaoweinan
2012-07-01
嘿嘿,那个只是最笨的办法,实际上是不行的,现在一般的都有swf,这个可以实际检测到上传的进度的
1 楼
javazzu
2012-06-28
我为啥不行呢
发表评论
-
关于java中对象属性值的校验的思考
2013-04-15 14:09 1505现在在java 开发中经常会遇到要交验某个obje ... -
Ant 使用小结
2013-03-01 15:25 781以前的项目中都没有用到过ant,都是手动打war,复制cop ... -
java 动态编译及执行实现Web式java开发
2012-11-29 17:05 885废话不说,让大家等了这么久,先看看截图 : 编译 ... -
Spring mvc 小编(配置)
2012-09-26 15:58 983上一篇讲述了Spring mvc 中常用的几个注解标示,这章 ... -
Spring mvc 小编(注解)
2012-09-21 17:16 1034前不久做web 项目用过spring mvc 觉着这玩意挺不错 ... -
jquery easyui 存储个人解读
2012-02-23 15:00 752这两天看了一下jquery easyui ,许多地方甚感不明 ... -
response.setContentType("") 小抄本
2012-02-18 10:00 773response.setContentType(" ... -
瀑布流布局个人实现
2012-02-14 15:48 1754目前互联网瀑布流的布局方式已经比比皆是,我也自己写了个东东,写 ... -
ftp文件上传 、下载
2012-02-09 13:36 1454使用spring mvc +commons-net-1.4.1 ... -
el 标记
2012-02-06 09:42 727EL表达式 1、EL简介 1)语法结构 ... -
无配置文件 搭建
2012-02-04 14:16 1621今天搞了个spring3.1+servlet3 无配置项目,事 ... -
js copy
2011-12-17 09:23 1045事件源对象 event.srcElement.tag ... -
汉字转拼音
2011-09-15 15:56 1239/** * * 功能:汉字转化为拼音 * **/funct ... -
linux 装jdk +tomcat
2011-09-10 00:12 7951、安装JDK的步骤如下: 1)下载j2sdk ,如jdk- ... -
js中汉字+字母混合求长度
2011-09-09 09:14 740谁写的啊 写的太好了 简单实用 String.protot ... -
hibernate 延迟加载的问题终于解决了
2011-09-06 16:00 897弄了几天 hibernate3 结果被联级加载时候延迟加载搞 ... -
一个基于hibernate的超类(仿springside) 已被以后借鉴
2011-09-06 09:43 830package com.dao; import java.i ... -
关于spring中 init-method中有注入对象的解决
2011-09-02 09:55 770今天我想在spring 启动时候检查一些基本的东西,需要自行运 ... -
Listener
2011-09-01 17:01 729Listener 是Servlet的监听器,它可以监听客户端的 ... -
js 同步请求文件
2011-06-24 11:49 1236/* js 同步请求文件 只适合于IE */ funct ...
相关推荐
文件上传 无刷新 带进度条 带网速,此代码包含完整的上传程序,您可以用来参照,肯定对您有帮助,分数不知道是否高了,但对于您有用的东西,肯定是物有所值
asp Ajax无刷新文件上传(带进度条,无组件) 技术交流网址WWW.94X.NET
艾恩Ajax无刷新文件上传(带进度条,无组件)艾恩Ajax无刷新文件上传(带进度条,无组件)艾恩Ajax无刷新文件上传(带进度条,无组件)
无刷新带进度条文件上传 进度条 文件上传
ajax + asp无刷新文件异步上传程序,并有进度条实时显示上传进度!ajax + asp无刷新文件异步上传程序,并有进度条实时显示上传进度!ajax + asp无刷新文件异步上传程序,并有进度条实时显示上传进度!ajax + asp无...
dwr实现无刷新带进度条的多文件上传,含全部java源码。乃本人收集网络上相关技术整合而成。解压后是eclipse工程,可直接放到eclipse中编译运行。
JSP批量上传,实现多文件无刷新上传(带有进度条)。 程序加了些须的验证,目前只能上传图片。 压缩文件为Eclipse项目文件,直接导入即可使用 预览图片地址: ...注:所有文件保存到项目文件夹下的uplaod文件夹下,...
HTML5 JS ajax 无刷新上传文件 带进度条 效果不错 自己用的
多文件 无刷新上传 带进度条 ,Ajax无刷新上传。
批量上传文件带进度条批量上传文件带进度条批量上传文件带进度条批量上传文件带进度条
ajax 无刷新上传文件带进度条 不下是你的损失!
基于uploadify的无刷新上传 带进度条,支持多文件上传
java+jquery文件上传,无刷新上传,显示上传进度(如5%),上传速度,已上传大小,剩于大小,已上传时间,统计上传所需时间,统计还剩多长时间
ASP无刷新批量上传文件插件 有进度条
非常漂亮ajax 无刷新上传 带进度条的源代码。下载后直接拷贝到程序下 启动就可运行 !
asp 无刷新上传 带进度条 来自网上 亲测好使 效果不错
现在主流技术AJAX开发, 可以上传图片和文件功能,无刷新技术。
基于Jquery Uploadify asp.net无刷新上传文件,带进度条,支持多文件,上G的大文件 例子使用多图片上传,支持上传后的图片拖拽排序(JqueryUI)。
android OkHttp上传文件并带进度条
FLASH多文件上传组件,带进度条 FLASH多文件上传组件,带进度条