2011-02-05 201 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

回答

相关问题