如何基于HTML5ajax文件(jQuery版本)实现上传进度条

如何基于HTML5ajax文件(jQuery版本)实现上传进度条
在最后一篇文章中,我们介绍了本文中的后台servlet,所以这里只是前台的JS代码。

首先,HTML5和Ajax提交数据首先要学习一种新的HTML5表单对象:

表单对象可以使用append方法关键值添加数据。与以前的JSON不同,我们可以异步上传二进制文件

1,一个formdate对象的创建
var =新的表单(表单);
2。到formdate对象添加数据
formdata.append(catname
formdata.append(年龄,1); / /数字类型将被转换成一个字符串类型
可以增加上传二进制文件,用户选择的文件已经包含的对象,如fileinputelement
formdata.append(用户文件
/ /一个blob对象也可以被添加到表单
无功ofilebody =嘿!;
无功oblob =新的BLOB({ ofilebody },{类型:文本或XML});
formdata.append(webmasterfile
三.使用表单对象
新的XMLHttpRequest(XHR)var =;
Xhr.open(后
Xhr.send(表单);

HTML的一部分

简单介绍了表单对象之后,让我们来看看页面的HTML代码编写


底部div用于显示进度条,因此需要相应的CSS样式。
#母{宽度:550px;高度:10px;边界:2px固体# 09f;}
#儿子{宽度:0;高度:100%;背景颜色:# 09f;文本对齐:中心;线高度:10px;字体大小:20px;font-weight: bold;}
js的一部分

再次,加载jQuery网页上后,我们看看Javascript写的,首先,文件的组件OnChange事件的方法:
功能showpic(){
var pic = $(# PIC ),(0)。文件{ 0 };
$(img)。道具(src
}
对showpic第一行是从文件对象得到上传文件。第二行img设置src属性。你可以即时预览页面上的效果。

以前我们看上传的文件的方法,让我们简单的学习日程事件的进展(事件进展)…

进展事件规范是W3C定义客户端服务器通信相关的事件的工作草案。这些事件的最早的真正价值是XHR的操作,但也有其他可供参考的API使用。有6个事件的进展。

Loadstart:触发时,相应的数据的第一个字节的接收。

进展:在接收期间连续触发。

错误:当请求出错时触发。

中止:由于调用了中止()方法,当链路终止时触发。

加载:当接收到完整的对应数据时触发。

Loadend:触发通信完成后或触发错误,中止,或加载事件。

进步是由Mozilla提交事件,这个事件触发定期浏览器接收新数据时,事件处理程序接收到一个事件对象进步的目标属性是一个XHR对象,但含有三个额外的属性:

lengthcomputable:布尔值,指示是否进步的信息是可用的

位置:表示已接收的字节数。

规模:代表字节的预期数量确定根据内容长度相应的头。

有了这个信息,我们可以为用户创建一个进度指示器。但是问题又来了,jQuery的Ajax方法不在进度事件上运行。这是怎么玩的

发现XMLHttpRequest对象调用jQuery的Ajax方法可以指定它是好的!!!
看8453行,就是这样。代码变成这种风格的UploadFile方法Ajax的部分是当。

代码中最重要的部分:
功能上传下载(){
U3000 U3000
得到/上传文件到表单对象。
var pic = $(#头),得到(0)。文件{ 0 };
var =新的表单(表单);
formdata.append(文件
$ ajax({
类型:邮政
URL
数据: / /表单,这里上传的数据使用的表单对象
数据处理:假,
false将自动添加必须正确的内容类型
内容类型:假,
U3000 U3000 U3000 U3000
在这里,我们首先得到一个jQuery / XMLHttpRequest对象,添加进度事件绑定它,然后回到阿贾克斯
Xhr:函数(){
VaR XHR =美元。ajaxsettings.xhr();
如果(进步XHR。上传){
Xhr.upload.addEventListener(进步
返回XHR;
}
}
});
}

Finally, add the onprogress method to make a full stop to the whole function.
*调查上传附件的情况,这种方法是约0.05-0。1第二执行
* /
功能的进步(EVT){
无功负载= evt.loaded; / /上传大小
VaR TOT = evt.total; / /附件的总大小
VaR math.floor每=(100×装 / / / TOT);比例已上传
$(#儿子)。Html(每+%);
$(#儿子)Css(宽。
}
最后,将整个页面附加到代码中进行比较。
html5_2.html
#母{宽度:550px;高度:10px;边界:2px固体# 09f;}
#儿子{宽度:0;高度:100%;背景颜色:# 09f;文本对齐:中心;线高度:10px;字体大小:20px;font-weight: bold;}
功能showpic(){
var pic = $(# PIC ),(0)。文件{ 0 };
$(img)。道具(src
UploadFile();
}
功能上传下载(){
var pic = $(# PIC ),(0)。文件{ 0 };
var =新的表单(表单);
formdata.append(文件

* jQuery表单的默认处理必须由错误的避免
* XMLHttpRequest将正确处理表单
* /
$ ajax({
类型:邮政
URL
表单数据,
数据处理:假,
false将自动添加必须正确的内容类型
内容类型:假,
Xhr:函数(){
VaR XHR =美元。ajaxsettings.xhr();
如果(进步XHR。上传){
Xhr.upload.addEventListener(进步
返回XHR;
}
}
});
}

*调查上传附件的情况,这种方法是约0.05-0。1第二执行
* /
功能的进步(EVT){
无功负载= evt.loaded; / /上传大小
VaR TOT = evt.total; / /附件的总大小
VaR math.floor每=(100×装 / / / TOT);比例已上传
$(#儿子)。Html(每+%);
$(#儿子)Css(宽。
}
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部