2011-02-04 56 views
4

我使用PHP函數virtual()通過Apache 2.2發送文件(它的工作速度快於readfile()),我可以檢查用戶訪問權限。通過支持HTTP_RANGE的Apache和PHP virtual()函數發送文件

但有沒有什麼辦法可以通過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); 
} 

所以Web的客戶端被下載的文件一樣,如果HTTP_RANGE工作,但在實際的Apache只是將始終是相同的文件範圍,如:如果客戶問4000- 6000字節,Apache發送0-2000等,所以文件被破壞。

我認爲有一些方法可以使用apache_setenv來做到這一點,但無法在Google中找到任何有關這方面的建議。

+0

您是否也可以發佈在服務器和客戶端事務期間發送的實際HTTP標頭。 – karlcow 2011-02-06 16:42:08

回答

3

嘗試爲Apache使用xfilesend模塊。