【问题标题】:Server-side, get progress on sending file服务器端,获取发送文件的进度
【发布时间】:2009-11-24 10:32:21
【问题描述】:

基本上,我想做的是在客户端下载文件时检查我的网络服务器向客户端发送了多少文件。这甚至可能吗? apache 是否提供任何可以帮助我完成任务的模块/扩展?

我使用 linux 发行版、apache2 和 php5。问候。

【问题讨论】:

    标签: php apache file progress fopen


    【解决方案1】:

    如果文件具有正确的“Content-length”标头集,浏览器将提供此功能。为什么要在页面中实现这一点?

    【讨论】:

    • 我想检查用户下载了多少文件的原因是,如果它发送了超过 60% 的文件,我可以执行另一个操作。
    【解决方案2】:

    解决了。

    我只是用 PHP 打开要发送给客户端的文件。

    $fh = fopen($filePath, 'r');
    

    然后我通过写来计算文件大小的 60%

    $fileSize = filesize($filePath);
    $sizeFirst = floor(($fileSize / 100) * 60);
    

    现在 $sizeFirst 变量以数值形式包含文件前 60% 的长度。 要计算剩下的 40%,我使用:

    $sizeLast = $fileSize - $sizeFirst;
    

    现在我可以写出前 60%,做我的动作,然后写出剩下的 40%。

    $dataFirst = fread($fh, $sizeFirst);
    echo($dataDirst);
    
    // Do my action here.
    
    $dataSecond = fread($fh, $sizeSecond);
    echo($dataSecond);
    exit();
    

    我需要设置 header();在写出之前,必须设置 Content-length、Content-type 和 Content-Disposition,以便向客户端发送有效的标头和文件内容。

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 2014-11-15
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多