2012-11-30 50 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不会变化