利用uploadprogress实现上传进度条

,继上次运用了uploadprogress上传扩展,自己弄了一个简单的实例,实现原理和apc实现的方法基本一样。
1.安装php_uploadprogress.dll扩展,重启apache
2.实现代码以下:
upload.php

PHP Code 复制内容到剪贴板
  1. <?php  
  2.    $id = $_GET['id'];  
  3. ?>  
  4. <form enctype="multipart/form-data" id="upload_form" action="target.php" method="POST">  
  5. <input type="hidden" name="UPLOAD_IDENTIFIER" value="<?php echo $id;?>" />   
  6. <input type="file" id="test_file" name="test_file"/><br/>  
  7. <input οnclick="window.parent.startProgress(); return true;" type="submit" value="上传"/>  
  8. </form>  

target.php

PHP Code 复制内容到剪贴板
  1. <?php    
  2. set_time_limit(600);  
  3. if($_SERVER['REQUEST_METHOD']=='POST') {  
  4.   move_uploaded_file($_FILES["test_file"]["tmp_name"],   
  5.   dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夹位于此脚本相同目录下  
  6.   echo "<p>上传成功</p>";  
  7. }  
  8. ?>  

getprogress.php

PHP Code 复制内容到剪贴板
  1. <?php    
  2. if (function_exists("uploadprogress_get_info")) {  
  3.       
  4.     $info = uploadprogress_get_info($_GET['progress_key']);  
  5.     if(!emptyempty($info)){  
  6.         if(($info['bytes_uploaded'] < $info['bytes_total']) && !emptyempty($info['bytes_uploaded']) && !emptyempty($info['bytes_total'])){  
  7.             $proNum = floor(($info['bytes_uploaded']/$info['bytes_total'])*100);          
  8.         }else{  
  9.             $proNum = 100;  
  10.         }  
  11.         echo $proNum;  
  12.     }else{  
  13.           
  14.     }  
  15. }  
  16. ?>  

progresstest.php

PHP Code 复制内容到剪贴板
  1. <?php  
  2.  $id = md5(microtime() . rand());  
  3. ?>  
  4. <html>  
  5. <head><title>上传进度</title></head>  
  6. <body>  
  7. <script src="js/jquery-1.4.4.min.js" language="javascript"></script>  
  8.   
  9.   
  10. <script language="javascript">  
  11. var proNum=0;  
  12. var loop=0;  
  13. var progressResult = "";  
  14. var interval;  
  15. function sendURL() {  
  16.             $.ajax({  
  17.                         type : 'GET',  
  18.                         url : "getprogress.php",  
  19.                         async : true,  
  20.                         cache : false,  
  21.                         dataType : 'json',  
  22.                         data: "progress_key=<?php echo $id;?>",  
  23.                         success : function(e) {  
  24.                             proNum=parseInt(e);  
  25.                                 if(e){  
  26.                                         document.getElementById("progressinner").style.width = proNum+"%";  
  27.                                        document.getElementById("showNum").innerHTML = proNum+"%";  
  28.                                      setTimeout("getProgress()", 200);  
  29.   
  30.                                 }else{  
  31.                                     if(interval == 1){  
  32.                                         document.getElementById("progressinner").style.width = "100%";  
  33.                                        document.getElementById("showNum").innerHTML = "100%";  
  34.                                     }  
  35.                                 }  
  36.                                    
  37.                         }  
  38.             });  
  39.     
  40. }  
  41.   
  42. function getProgress(){  
  43.  loop++;  
  44.   
  45.  sendURL();  
  46. }  
  47.   
  48. function startProgress(){  
  49.     interval = 1;  
  50.     document.getElementById("progressouter").style.display="block";  
  51.     document.getElementById("progressinner").style.width = proNum+"%";  
  52.     document.getElementById("showNum").innerHTML = proNum+"%";  
  53.    setTimeout("getProgress()", 500);  
  54. }  
  55. </script>  
  56. <iframe id="theframe" name="theframe" src="upload.php?id=<?php echo $id; ?>"   
  57.         style="border: none; height: 100px; width: 400px;" >   
  58. </iframe>  
  59. <br/><br/>  
  60. <div id="progressouter" style="width: 500px; height: 20px; border: 6px solid red; display:none;">  
  61.    <div id="progressinner" style="position: relative; height: 20px; background-color: purple; width: 0%; "></div>  
  62. </div>  
  63. <div id='showNum'></div><br>  
  64. <div id='showNum2'></div>  
  65. </body>  
  66. </html>  

同时可以下载demo  uploadprogress.rar


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值