错误的文件名,但它是正确的

时间:2012-08-08 18:49:45

标签: php pdf download file-exists

我正在尝试创建下载按钮,以便用户只需单击按钮即可下载pdf文件。我有这个:

<?php

session_start(); // Alltid överst på sidan

if(!isset($_SESSION['sess_id']) OR $_SESSION['sess_id'] < 1){
   die("Skapa ett konto som investerare för att enkelt få tillgång till affärsplaner!");
}else if(is_numeric($_SESSION['sess_id'])) {

    /* kolla om användaren försöker ange filer i en annan mapp */
    if(substr_count($_GET['file'], "/") > 0){
        die("Invalid path"); }


/* skapa fullständig sökväg till filen */
$file = '/server/php/files/' . $_GET['file'];

/* kolla om filen finns */
if(!file_exists($file))
{
   die("Invalid filename");
}

并且它给了我一个“Invalidfile name”消息..

然而, 当我echo $file;并将路径复制到我的浏览器(前面的+ localhost)时,它为我提供了我正在寻找的下载对话框。关于我做错了什么想法?

echo $file

的输出
/server/php/files/roibay-business-plan.pdf

和“server”是我的根文件夹中的文件夹。

2 个答案:

答案 0 :(得分:2)

  

当我回复$ file;并将路径复制到我的浏览器,它为我提供了我正在寻找的下载对话框。

那是因为file_exists需要一个相对于服务器的路径名;不是URI。

示例:

file_exists('/var/www/site.com/index.htm'); // this would work.
file_exists('www.site.com/index.htm'); // this would not

答案 1 :(得分:2)

  

我用mamp设置了localhost,我创建了一个别名   lab.local所以我正在谈论的文件路径是:   lab.local / server / php / files / somefile.pdf当我输入它时   webbrowser对话框弹出,但file_exists不会验证   路径

这意味着server目录不是您的根目录。试试这个:

file_exists($_SERVER{'DOCUMENT_ROOT'} . "/server/php/files/roibay-business-plan.pdf"))