2011-02-05 81 views
3

我有一個非常簡單和標準的PHP強制下載腳本。檢測下載是否完成

如何檢查下載是否完成以及何時通知客戶端的用戶?我甚至不需要實時顯示進度,我只對特定事件感興趣:「下載完成時」。根據我的研究,似乎必須從服務器端確定,因爲沒有ondownloadready事件,我不認爲有可能攔截瀏覽器事件。

所以看來我最好的選擇是比較發送到總字節數的字節與某種客戶端/服務器端交互。我將如何去檢查從服務器發送的PHP強制下載的字節?是否有某種全局PHP變量存儲這些數據,我可以用AJAX進行ping?

<?php 

    header("Content-Type: video/x-msvideo"); 
    header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";"); 

    ... 

    $chunksize = 1 * (1024 * 1024); // how many bytes per chunk 
    if ($size > $chunksize) { 
      $handle = fopen($realpath, 'rb'); 
      $buffer = ''; 
      while (!feof($handle)) { 
       $buffer = fread($handle, $chunksize); 
       echo $buffer; 
       ob_flush(); 
       flush(); 
      } 
      fclose($handle); 
    }    
    else { 
     readfile($realpath); 
    } 
    exit(); 
    ?> 

的原因,我需要這樣的:

對於這個項目我的工作,就要求下載開始後,將頁面重定向到(或顯示器)「請等待下載完成「頁面。然後,一旦完成,它應該重定向到(或顯示)「您的下載已完成,謝謝」頁面。我願意接受其他可以達到相同結果的想法。

+0

+1編寫非常清晰和透徹的問題。 – jmort253 2011-02-09 02:58:00

回答