2011-02-05 4 views
3

私は非常に簡単で標準的なPHP強制ダウンロードスクリプトを持っています。ダウンロードが完了したら検出します

クライアント側でユーザーに通知するためにダウンロードが完了したかどうかを確認するにはどうすればよいですか?私はリアルタイムで進行状況を示す必要はない、私は非常に特定のイベントにのみ興味がある: "ダウンロードが完了したとき"。私の研究に基づいて、ondownloadreadyイベントがないのでサーバ側から判断する必要があり、ブラウザのイベントを傍受することはできないと思われます。

だから、私の最善の策は、いくつかの種類のクライアントサイド/セバーサイドのやり取りと合計バイトに送られたバイトを比較することだと思われます。 PHPの強制ダウンロードのためにサーバーから送信されたバイトをチェックするにはどうすればいいですか? AJAXでpingできるこれらのデータを格納する、ある種のグローバルなPHP変数がありますか?

<?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非常に明確かつ徹底的な質問を書き込むため:

ここでダウンロードが完了したときに検出するために、AJAXポーリングを使用して説明し、完全なスレッドがあります。 – jmort253

答えて

関連する問題