Spring mvc 上传进度条实现
以下的仅仅是学习而已,记录以下笔记
1 springmvc 进度条,要实现ProgressListener接口,实现方法update(long readLength, long contextLength, int items)
代码如下:
public class mProgressListener implements ProgressListener {
String pCount=null;
int sa=0;
public String getpCount() {
return pCount;
}
/* 第一个参数代表当前已读了多少字节,第二个参数代表整个表单的长度也可以当做文件的总大小,第三个参数是代表已解析到第几个(这里对你不重要) */
@Override
public void update(long readLength, long contextLength, int items) {
double result = (readLength / (double)1048576) / (contextLength / (double)1048576);
if(contextLength<0){
}else{
long read=readLength/1048576;
long context=contextLength/1048576;
sa=(int)Math.round((100.0)*read/context);
}
//DecimalFormat df = new DecimalFormat("#.00");
//System.out.println(read+"/"+context+"="+sa+":contextLength="+contextLength);
NumberFormat nf = NumberFormat.getPercentInstance();
// System.out.println((readLength / (double)1048576) + "/" +( contextLength / (double)1048576)
// + "=" + nf.format(result));
pCount =sa+"";
}
}
2,重写类CommonsMultipartResolver
public class CommonsMultipartResolver extends
org.springframework.web.multipart.commons.CommonsMultipartResolver { HttpServletRequest request; @Override
protected FileUpload newFileUpload(FileItemFactory fileItemFactory) { ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
upload.setSizeMax(-1);
if (request != null) {
mProgressListener pListener = new mProgressListener();
upload.setProgressListener(pListener);
request.getSession().setAttribute("pListener", pListener);
} return upload;
} @Override
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest arg0)
throws MultipartException {
this.request = arg0;
return super.resolveMultipart(arg0);
}
}
3,spring-servlet.xml 修改为
<!-- 支持上传文件 -->
<bean id="multipartResolver" class="com.glass.test.CommonsMultipartResolver">
<property name="maxUploadSize" value="-1" />
</bean>
4,jsp界面运用ajax实现数据的互交,
用到AjaxFileUpload.js 实现文件的异步传输
<script type="text/javascript">
$(function(){
$("#submin").click(function(){
$.ajaxFileUpload({
url: 'upLoadProgress.htm',
type: 'post',
secureuri: false, //一般设置为false
fileElementId: 'file', // 上传文件的id、name属性名
dataType: 'text', //返回值类型,一般设置为json、application/json
// elementIds: elementIds, //传递参数到服务器
success: function(data, status){
layer.alert(data);
},
error: function(data, status, e){
alert(e);
}
});
// $("#pform").submit();
// $("$pCount").text("51465") ;
startProgress();
return false;
});
function startProgress(){
$.ajax({
type: "post",
dataType: "text",
url: "testProgress.htm",
data: "",
success: function (data) {//data是没有小数的整型,
var num= parseInt(data)*0.01;
$("#flownum").text(data+"%") ;//显示到界面
$("#pCount").attr("width",(1000*num)+"px");
if(num<1){
setTimeout(startProgress(),2000);
}
// layer.alert(data);
}
});}
});
</script>
4,Controller 接收上传
5,Progress的controller如下:
@RequestMapping(value ="testProgress")
public void progress(HttpServletResponse response,
HttpServletRequest request) {
mProgressListener pListener= (mProgressListener) request.getSession().getAttribute("pListener");
setMessage(pListener.getpCount());//自己写的方法
Ajax(response);//自己写的方法 }
Spring mvc 上传进度条实现的更多相关文章
- spring定时任务-文件上传进度条
spring定时任务 导依赖 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dep ...
- Spring MVC上传文件原理和resolveLazily说明
问题:使用Spring MVC上传大文件,发现从页面提交,到进入后台controller,时间很长.怀疑是文件上传完成后,才进入.由于在HTTP首部自定义了“Token”字段用于权限校验,Token的 ...
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
- Spring MVC上传文件
Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...
- HTML5矢量实现文件上传进度条
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...
- 基于HT for Web矢量实现HTML5文件上传进度条
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...
- PHP中使用Session配合Javascript实现文件上传进度条功能
Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP .4以前,实现这样的进度条并不容易 ...
- Spring MVC 上传文件
Spring MVC上传文件需要如下步骤: 1.前台页面,form属性 method设置为post,enctype="multipart/form-data" input的typ ...
- iOS_文件上传进度条的实现思路-AFNettworking
iOS_文件上传进度条的实现思路-AFNettworking //要上传的文件名,在这里我使用当前日期做为文件的名称 NSString * fileName =[NSString stringWith ...
随机推荐
- 框架学习:ibatis框架的结构和分析
由于最近一段时间比较忙碌,<框架学习>系列的文章一直在搁浅着,最近开始继续这个系列的文章更新. 在上篇文章中我们说到了hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优 ...
- PBCS项目总结
PBCS项目已经成功地Product,终于可以缓解一下紧张的心情,最近连续四五个月紧张地工作,头都要大了.如今比较清闲,是时候总结一下整个项目了.(古人云:成功在于总结嘛) 整个项目是二个人开发的,由 ...
- CentOS, FreeBSD, Ubuntu LTS 维护风格的简单比较
https://jackqq.wordpress.com/2014/06/24/centos-vs-freebsd-vs-ubuntu-lts/ 看到周围的人好多在用或者学 CentOS,忍不住也想看 ...
- Jmeter(二十六)_数据驱动测试
花了一点时间做了一个通用的执行引擎,好处就是我不用再关注测试脚本的内容,而是用测试用例的数据去驱动我们执行的方向.(这个只适合单个接口的测试,具体运用到接口自动化时,还是要靠手动去编写脚本!) 首先我 ...
- IE条件注释,为IE单独写js
<!--[if IE ]> <body class="ie"> <![endif]--> <!--[if !IE]>--> & ...
- Python测试远程端口连接时间
问题 最近自己服务器访问别人的服务器,有时候会报超时错误,有时候又能够正常访问别人服务器. 思路 最开始猜测是网络不稳定造成的,但是自己没有收集什么时候超时,什么时候能正常访问别人服务器的日志,搞网络 ...
- Unity3d Mecanim动画系统Animator学习笔记
1. unity3d Mecanim学习 Unity3d新版动画系统网上的介绍很多,但多是流水笔记,外人很难看明白,后来我 终于找到介绍的比较明白的两个作者,特别感谢.一个是58开发网的乐天老师,课 ...
- R语法学习 第十二篇:因子
因子(factor)是R语言中比较特殊的一个类型, 它是一个用于存储类别的类型,因子的行为有时像字符串,有时像整数.因子也是一个向量,每个元素都是字符类型.因子具有因子水平(Levels),用于限制因 ...
- 命令行备忘录 cli-memo
前言 有时候想用一个简洁点儿的备忘录,发现没有简洁好用的,于是就想着开发一个,秉着简洁 的思想,所以连界面都没有,只能通过命令行来操作(尽可能的将命令简化).设计的时候 借鉴了git分支的思想,每个备 ...
- token 防止csrf
转自:ttps://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/#icomments 当前防御 CSRF 的几种策略 验证 HTTP Ref ...