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 ...
随机推荐
- 并发编程(四):atomic
本篇博客我们主要讲述J.U.C包下的atomic包,在上篇博客"并发模拟"的最后,我们模拟高并发的情形时出现了线程安全问题,怎么解决呢?其实解决的办法有很多中,如直接在add()方 ...
- [开源]基于ffmpeg和libvlc的视频剪辑、播放器
[开源]基于ffmpeg和libvlc的视频剪辑.播放器 以前研究的时候,写过一个简单的基于VLC的视频播放器.后来因为各种项目,有时为了方便测试,等各种原因,陆续加了一些功能,现在集成了视频播放.视 ...
- Python Tips阅读摘要
发现了一本关于Python精通知识点的好书<Python Tips>,关于Python的进阶的技巧.摘录一些比较有价值的内容作为分享. *args and **kwargs 在函数定义的时 ...
- 深度学习之 TensorFlow(四):卷积神经网络
基础概念: 卷积神经网络(CNN):属于人工神经网络的一种,它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量.卷积神经网络不像传统的识别算法一样,需要对数据进行特征提取和数据重建,可以直 ...
- cocos2d-x工作小记
1.当一个layer跳到下一个layer时,需要传递数据,可以默认定义一个setUserData()方法. 2.cocos2d-x不使用传统的值类型,所有的对象都创建在堆上,然后通过指针引用. 3.传 ...
- 洛谷 P1879 解题报告
P1879 [USACO06NOV]玉米田Corn Fields 题目描述 农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ M ≤ 12; 1 ≤ ...
- Qtp自动测试工具
QTP是基于GUI界面的自动化测试工具,用于系统的功能测试. QTP录制的是鼠标和键盘的消息.QTP录制回放时基于windows操作系统的消息机制.QTP在录制时监听应用程序的消息,监听到之后把消息放 ...
- macbook 添加快捷启动服务
来至 Mac OS X: Launch Terminal from keyboard shortcut os x 上很多功能都可以通过Apple自家的Automator.app创建,且使用此方法可以为 ...
- 解决Kali用户名密码正确但是无法登陆的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=684 前言: 用户名和密码都正确,但是登陆Kali的时候总是提示用户名或密码错误,无法登陆,本文介绍一种解决办法. ...
- Oracle12c中功能及性能新特点之with子句的增强
1. 设置创建测试表.DROP TABLE test PURGE; CREATE TABLE test ASSELECT 1 AS idFROM dualCONNECT BY level < ...