【问题标题】:Detect if Download is Complete检测下载是否完成
【发布时间】:2011-06-21 19:08:14
【问题描述】:

我有一个非常简单和标准的 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();
     ?>

我需要这个的原因:

对于我正在进行的项目,要求在下载开始后,页面重定向到(或显示)“请稍候,下载完成”页面。然后,一旦完成,它应该重定向到(或显示)“您的下载已完成,谢谢”页面。我愿意接受其他可以达到相同结果的想法。

【问题讨论】:

  • +1 写了一个非常清晰透彻的问题。
  • 您好,您有什么解决办法吗?我需要这个东西

标签: php javascript ajax dom mootools


【解决方案1】:

查看描述解决方案的 Sitepoint Forum Post

基本上,一旦 while 循环中断,您就完成了!

这是描述使用 AJAX 轮询来检测下载何时完成的完整线程:http://www.sitepoint.com/forums/showthread.php?t=618233

【讨论】:

    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2011-10-28
    • 2012-06-12
    • 2023-04-10
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多