2012-02-28 67 views
2

我想強制下載管理器只下載一個字節範圍。只強制下載一個範圍

現在發生了什麼,我的下載管理器從我的php文件請求多個範圍,我不希望發生這種情況(我有理由)是否有任何http頭設置爲強制一個範圍下載?

我使用這個代碼,以阻止任何第二範圍連接,但用代碼的問題,恢復被禁用

if ($_SERVER['REQUEST_METHOD']=='GET' && isset($_SERVER['HTTP_RANGE']) && $range=stristr(trim($_SERVER['HTTP_RANGE']),'bytes=')) 
{ 
$arrr = explode('-', $range); 
if (isset($arrr[1])) die(); 
$f= fopen('era','w'); 
fwrite($f, $range); 
fclose($f); 
$start_range = $arrr[0]; 
$range=substr($range,6); 
header("Content-Range: bytes $range/$filesize"); 
} 

回答

1

我居然發現一個竅門來解決這個問題,它可能不是專業的方式,但它的作用就像一種魅力。我檢查標題範圍,如果它從xxxx字節到最後允許它。如果它要求範圍xxx到yyy然後發送一個錯誤的標題(這是個竅門),這樣下載管理器將等待有效的響應,但它永遠不會得到,所以操作將耗時,並且請求重複。這裏是簡單的命令,使魅力

$range=substr($range,6); 
$arrr = explode('-', $range); 
$start_range = $arrr[0]; 
if(!isset($arrr[1])) header("Content-Range: bytes $range/$filesize"); 
else header("Content-Range: bytes bytes $arrr[0]");//bad header