2012-11-30 49 views
5

每當我使用此腳本下載文件時,在下載時我看不到總大小和速度...我想使它看起來更像'直接下載鏈接'。此腳本的目的是隱藏直接下載鏈接限制直接下載和其他下載行爲,如機器人。想想主人MediaFire,Rapidshare,互聯星空等PHP:強制下載頭不會顯示總大小和速度

我們現在的腳本工作,但不顯示,因爲它是如何當你從一個正常的下載鏈接下載顯示的,我會後所發生的事情的截圖:
enter image description here

我希望這有助於截圖,因爲我搜索過小時,互聯網,似乎無法找到解決這一:(。

if (isset($_GET['file'])){ 
    $file = $_GET['file']; 
    $path = '/home/user/domains/domain.com/files/upload/'; 
    $filepath = $path.$file; 

    if (file_exists($filepath)){ 

    set_time_limit(0); // for slow connections 

    header('Content-Description: File Transfer'); 
    header("Content-Disposition: attachment; filename=\"$file\""); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Length: ' . filesize($filepath)); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Expires: 0'); 

    readfile($filepath); // send file to client 
    } 
    else{ 
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); 
    } 
    }else{ 
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); 
    } 
+1

Chrome/Safari的開發人員工具窗口對發送到客戶端的標頭有什麼看法?另外,請嘗試Firefox的「Live HTTP Headers」擴展。 – Dai

+0

您正在測試什麼瀏覽器和版本? – MrLore

+0

@MrLore目前我們正在使用最新版本的Chrome,Internet Explorer和FireFox,我們希望它可以在所有瀏覽器上運行,但我們偏好使用Chrome。正如您在屏幕截圖中看到的那樣,它發生在Chrome和Internet Explorer上。 –

回答

2

在與mod_deflate模塊的服務器級別壓縮內容或類似的東西?

這已經在這裏找到答案: Sending correct file size with PHP download script

「如果壓縮文件使用zlib的,mod_deflate模塊等的Content-Length頭將不準確,所以你最終看到」未知大小「和‘未知剩餘時間’下載文件的時候。」

「你可以很容易地禁用它使用下面的行適用的.htaccess文件一個腳本:

SetEnvIfNoCase REQUEST_URI ^/NO-的download.php gzip不要變化 wh假設download.php假定位於服務器根目錄路徑下的下載腳本中(例如, www.crimsonbase.com/download.php)。 (這是因爲正則表達式^ /的download.php)」

而且,請注意,你的程序是不安全的。有人可能會有效地發送以下get參數_GET [‘文件’]

../../../../../Documents/MyStuff 

,它將完全覆蓋你的$ PATH限制。

表明,在路徑剔除任何..引用。

0

我今天有類似的問題,我無法得到總規模(下載進度)下載的文件。

瀏覽器標題顯示「壓縮」爲內容類型,我能夠通過prevening服務器上的download.php腳本中使用gzip來解決這個問題,這個htaccess的行:

SetEnvIfNoCase REQUEST_URI ^/download.php no-gzip不會變化