4

我正在使用 PHP 函数virtual()通过 Apache 2.2 发送文件(它比 readfile()工作得更快)并且我可以检查用户访问权限。

但是有没有办法通过 HTTP_RANGE 添加持续下载支持?

我试过这样的事情

if(isset($_SERVER['HTTP_RANGE'])) { 
        list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']); 
        str_replace($range, "-", $range); 
        $size2=$size-1; 
        $new_length=$size-$range; 
        header("HTTP/1.1 206 Partial Content"); 
        header("Content-Length: $new_length"); 
        header("Content-Range: bytes $range$size2/$size"); 
        apache_setenv('HTTP_RANGE', $_SERVER['HTTP_RANGE']);
    } else { 
        $size2=$size-1; 
        header("Content-Range: bytes 0-$size2/$size"); 
        header("Content-Length: ".$size); 
} 

因此,如果 HTTP_RANGE 工作,web-client 会下载文件,但在真正的 Apache 中总是发送相同的文件范围,例如:如果客户端要求 4000-6000 字节,Apache 发送 0-2000 等,所以文件被破坏了。

我认为有一些方法可以使用 apache_setenv 来做到这一点,但在 Google 中找不到任何关于此的建议。

4

1 回答 1

3

尝试为 Apache 使用 xfilesend 模块。

于 2011-02-07T08:13:34.157 回答