ajax和HTML5异步文件上传之进度条
来源:互联网 发布:用友软件难吗 编辑:程序博客网 时间:2024/06/05 09:58
ajax和HTML5异步文件上传之进度条
在之前的文章中已经介绍过ajax的异步文件上传,这篇文主要是在上一篇文章的基础上,添加了一个上传进度条。
主要是思路是:在XMLHttpRequest的2版本中,添加了一个新的对象 upload,在这个对象实现了对上传进度的监控事件,通过
事件属性upload的onprogress事件属性可以实时获得当前上传的大小,以及文件的总大小。然后通过js不断设置html标签的css实现一个简单的进度条效果。
前台文件upload.html全部代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><head> <title>ajax异步文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="" /> <meta name="keywords" content="" /><style type='text/css'> #progress{ width:400px; height:20px; border:solid 1px black; } #bar{ background:#CAFFFF; width:50%; height:19px; }</style> <script type="text/javascript"> function createXHR() { var xhr=null; if(window.XMLHttpRequest) //要是支持XMLHttpRequest的则采用XMLHttpRequest生成对象 xhr=new XMLHttpRequest(); else if(window.ActiveXobiect)//要是支持win的ActiveXobiect则采用ActiveXobiect生成对象。 xhr=new ActiveXobiect('Microsoft.XMLHTTP'); return xhr; } function ajax_upload() { var xhr=createXHR(); var formData=new FormData(); var file=document.getElementsByTagName('input')[0].files[0]; var info='文件名:'+file.name+' 文件类型:'+file.type+' 文件大小:'+file.size; var showInfo=document.getElementById('showinfo'); var bar=document.getElementById('bar'); var progress=document.getElementById('progress'); showInfo.innerHTML=info; formData.append('pic',file); xhr.open('POST','./move_file.php',true); xhr.send(formData); xhr.onreadystatechange=function(){ if( this.readyState==4 && this.status==200) { showInfo.innerHTML=showInfo.innerHTML+'<br />'+this.responseText;progress.style.display='none'; } } var schedule=0; xhr.upload.onprogress=function(d){ //为事件属性设置回调函数,在回调函数中计算当前进度,回调函数中的d表示当前传入的参数,d.loaded表示已经上传的,d.total表示文件总大小。 progress.style.display='block'; schedule=d.loaded/d.total*100; schedule=schedule.toFixed(2); console.log(bar); bar.style.width=schedule+'%'; bar.innerHTML=schedule+'%'; } } </script></head><body> <input type='file' name='pic' /> <input type='submit' value='提交' onclick='ajax_upload();'/><div id='showinfo'></div><br /><div id='progress' style='display:none;text-align:center;'> <div id='bar' style='text-align:right;'> </div></div></body>
这部分的是核心,最开始隐藏代表进度条的div,一旦开始上传文件,显示进度条,并将通过已经上传文件的大小所占百分比,控制id=bar的div宽度变化,同时将百分比写到bar中,使用百分比表示当前的上传进度。
后台文件文件move_file.php全部代码如下:<?phpheader('Content-Type:text/html;charset=utf-8');if(empty($_FILES))die('上传为空文件');if($_FILES['pic']['error']!=0)die('文件上传出错');/* 需要注意的是,一般我们在测试开发时是在,window系统上的继承环境上的,而window上是gbk2312编码 要想存储的文件名也是中文的话,要从utf-8转为gbk2312,linux系统则不用,因为linux系统是utf-8编码*/$content = iconv( "utf-8","gb2312", $_FILES['pic']['name']);move_uploaded_file($_FILES['pic']['tmp_name'],'./'.$content);echo '文件上传成功!';?>
结果截图如下:
0 0
- ajax和HTML5异步文件上传之进度条
- html5 ajax文件上传的进度条实现
- ajax与html5实现异步文件上传
- servlet3.0之ajax文件上传和进度条
- HTML5 jQuery+FormData 异步上传文件,带进度条
- HTML5 jQuery+FormData 异步上传文件,带进度条
- HTML5 jQuery+FormData 异步上传文件,带进度条
- html5 进度条上传文件
- PHP+Ajax异步带进度条上传文件实例
- ajax利用html5新特性带进度条上传文件
- ajax利用html5新特性带进度条上传文件
- HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条
- 基于HTML5 Ajax实现文件上传并显示进度条
- ajax 文件上传进度条
- HTML5 异步上传文件
- html5异步上传文件
- 利用html5的FormData对象和ajax实现异步文件上传
- 利用html5的FormData对象和ajax实现异步文件上传
- 第九周项目4-广义表算法库及应用(1)
- [CF712D]Memory and Scores
- 【c语言】*(p-1) {指针相关}
- InputMethodUtils
- Hadoop学习路程--基本命令
- ajax和HTML5异步文件上传之进度条
- Java基础知识学习:异常
- my学习001
- jQuery-file-upload随笔
- 第9周项目3 稀疏矩阵的三元组表示的实现及应用(1)
- NSUserDefault 存入NSMutableArray数组解决方案
- 第九周项目4-广义表算法库及应用(2)
- thinkcmf中Ueditor图片上传相对路径的修改,删除前缀http://xx.com
- JAVA之操作数据库增删改查-JDBC的使用