php - 通过支持 HTTP_RANGE 的 Apache 和 PHP virtual() 函数发送文件

标签 php apache apache2 resume-download

我正在使用 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 有效,网络客户端就会下载文件,但实际上 Apache 总是发送相同的文件范围,例如:如果客户端要求 4000-6000 字节,Apache 发送 0-2000 等等,所以文件被破坏了。

我认为有一些方法可以使用 apache_setenv 来实现,但在 Google 中找不到任何相关建议。

最佳答案

尝试使用 Apache 的 xfilesend 模块。

关于php - 通过支持 HTTP_RANGE 的 Apache 和 PHP virtual() 函数发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898383/

相关文章:

php - 如果密码验证条件中的条件在 php 中无法正常工作

php - PDO异常是: "No Database Connection"

php - 如何让 MongoDB 与 php 5.3.5 & wamp 一起使用?

linux - shell命令的含义和htaccess文件?

apache2只允许用户 'x'打开url 'example.com/private/x'

php - 在该文件夹中创建文件夹和子文件夹

javascript - 通过 ajax 具有唯一 ID 的多个复选框

php - 如何让 Xdebug 为 php 7.3 和 apache (MACOS) 工作

security - 为 Apache 配置 mod_proxy 以拒绝错误的域请求

带身份验证的 Apache VirtualHost,websockets