php使用APC實現即時上傳進度條功能_php技巧

來源:互聯網
上載者:User

php不具備即時上傳進度條功能,如果想有這種功能我們一般會使用ajax來實現,但是php提供了一個apc,它就可以與php配置實現上傳進度條功能。
主要針對的是window上的應用。
1.伺服器要支援apc擴充,沒有此擴充的話,下載一個擴充擴充要求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.phpPHP 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> 

以上就是跟大家分享的php使用APC實現即時上傳進度條功能的方法,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.