使用PHP和JavaScript下载状态

时间:2012-02-12 00:32:00

标签: php javascript download statusbar

我目前正在寻找一种在页面上显示文件下载状态的方法。 我知道这不是必需的,因为用户通常在浏览器中有下载状态,但我想让用户保持在他下载的页面上,只要下载持续。为此,下载状态应与文件实际具有的状态匹配(不是假的prograss栏)。也许它还会显示用户下载的速度,并根据当前的下载速率估算所需的时间。

可以使用PHP和Javascript完成吗?或者它真的需要Flash或Java吗?

服务器上的某处不应该是关于谁以什么速度和多少下载内容的信息?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

不太可能跨浏览器,但要仔细研究http://markmail.org/message/kmrpk7w3h56tidxs#query:jquery%20ajax%20download%20progress+page:1+mid:kmrpk7w3h56tidxs+state:results。 IE(像往常一样)是不打球的罪魁祸首。

答案 1 :(得分:0)

您可以使用两个单独的php文件,第一个文件进行下载过程。 像:

$strtTime=time();
$download_rate=120;   //downloading rate  
    $fp = fopen($real, "r");
      flush();// Flush headers
    while (!feof($fp)) {   
     $downloaded=round($download_rate * 1024);
        echo fread($fp,$downloaded );
        ob_flush();
       flush(); 
        if (connection_aborted ()) {

     // unlink("yourtempFile.txt" ;
            exit;
        }

     $totalDw +=$downloaded;
     // file_put_contents("yourtempFile.txt", "downloaded: $totalDw ; StartTime:$strtTime");
          sleep(1);
    }
    fclose($fp);
   // unlink("yourtempFile.txt") ;

第二个文件将被Ajax连续读取yourtempFile.txt。由于开始打印,因此不会使用会话和Cookie。