正在下载文件

时间:2014-06-23 12:35:57

标签: php mysql

我有一个问题 这是我下载文件的脚本,但收到“无效请求”消息 ........................... ...................为什么???

$file = 'var/www/html/share/files/'.$_GET['filename'];

if (is_readable ($file)) {
$fsize = $row[size];
$path_parts = pathinfo($file);
$ext = strtolower($path_parts["extension"]);
$ctype="video/".$ext;
    header("Content-type: ".$ctype); 
    header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\"");  
 header("Content-length: $fsize");
    header("Cache-control: private"); //use this to open files directly
    readfile($file);
exit;
} else {
        die("Invalid request");
      }

1 个答案:

答案 0 :(得分:3)

您收到该消息是因为您编写的代码显示该消息。

显然,这会产生false值:

if (is_readable ($file))

您在此设置$file的值:

$file = 'var/www/html/share/files/'.$_GET['filename'];

您很可能想要在根文件夹前添加:

$file = '/var/www/html/share/files/'.$_GET['filename'];

否则,您在相对于当前文件夹的名为var 的文件夹中查找文件,这是不太可能的。

另外,请注意你正在做的是非常糟糕的做法。使用此代码,任何用户都可以从您的计算机请求任何文件。例如,如果GET请求中的filename是这样的话:

../../../../../etc/passwd