程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP利用apc實現上傳進度條方法

PHP利用apc實現上傳進度條方法

編輯:關於PHP編程

php本身是不具備可以帶有實時上傳進度條功能了,如果想有這種功能我們一般會使用ajax來實現,但是php提供了一個apc,他就可以與php配置實現上傳進度條哦。

主要針對的是window上的應用。
1.服務器要支持apc擴展,沒有此擴展的話,百度一下php_apc.dll ,下載一個擴展擴展要求php.5.2以上。
2.配置apc相關配置,重啟apache

 代碼如下 復制代碼 extension=php_apc.dll  
apc.rfc1867 = on  
apc.max_file_size = 1000M  
upload_max_filesize = 1000M  
post_max_size = 1000M  

 

說明一下:至於參數要配多大,得看項目需要apc.max_file_size,  設置apc所支持上傳文件的大小,要求apc.max_file_size <=upload_max_filesize  並且apc.max_file_size <=post_max_size.重新啟動apache即可實現apc的支持.
3.在代碼裡面利用phpinfo();查看apc擴展安裝了沒有。
4.下面是實現代碼:
getprogress.php

 代碼如下 復制代碼

<?php  
session_start();  
if(isset($_GET['progress_key'])) {  
  $status = apc_fetch('upload_'.$_GET['progress_key']);  
  echo ($status['current']/$status['total'])*100;  
}  
?>  
upload.php

PHP Code
<?php  
   $id = $_GET['id'];  
?>  
<form enctype="multipart/form-data" id="upload_form" action="target.php" method="POST">  
<input type="hidden" name="APC_UPLOAD_PROGRESS"   
       id="progress_key"  value="<?php echo $id?>"/>  
<input type="file" id="test_file" name="test_file"/><br/>  
<input onclick="window.parent.startProgress(); return true;"  
 type="submit" value="上傳"/>  
</form>  

target.php

 代碼如下 復制代碼 <?php    
set_time_limit(600);  
if($_SERVER['REQUEST_METHOD']=='POST') {  
  move_uploaded_file($_FILES["test_file"]["tmp_name"],   
  dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夾位於此腳本相同目錄下  
  echo "<p>上傳成功</p>";  
}  
?>  

index.php

 代碼如下 復制代碼

<?php  
   $id = md5(uniqid(rand(), true));  
?>  
<html>  
<head><title>上傳進度</title></head>  
<body>  
<script src="js/jquery-1.4.4.min.js" language="javascript"></script>  
  
  
<script language="javascript">  
var proNum=0;  
var loop=0;  
var progressResult;  
function sendURL() {  
            $.ajax({  
                        type : 'GET',  
                        url : "getprogress.php?progress_key=<?php echo $id;?>",  
                        async : true,  
                        cache : false,  
                        dataType : 'json',  
                        data: "progress_key=<?php echo $id;?>",  
                        success : function(e) {  
                                     progressResult = e;  
                                      proNum=parseInt(progressResult);  
                                      document.getElementById("progressinner").style.width = proNum+"%";  
                                      document.getElementById("showNum").innerHTML = proNum+"%";  
                                      if ( proNum < 100){  
                                        setTimeout("getProgress()", 100);  
                                      }   
                                   
                        }  
            });  
    
}  
  
function getProgress(){  
 loop++;  
  
 sendURL();  
}  
var interval;  
function startProgress(){  
    document.getElementById("progressouter").style.display="block";  
   setTimeout("getProgress()", 100);  
}  
</script>  
<iframe id="theframe" name="theframe"   
        src="upload.php?id=<?php echo $id; ?>"   
        style="border: none; height: 100px; width: 400px;" >   
</iframe>  
<br/><br/>  
<div id="progressouter" style="width: 500px; height: 20px; border: 6px solid red; display:none;">  
   <div id="progressinner" style="position: relative; height: 20px; background-color: purple; width: 0%; "></div>  
</div>  
<div id='showNum'></div><br>  
<div id='showNum2'></div>  
</body>  
</html>  


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved