1

我正在尝试创建下载按钮,以便用户可以通过单击按钮下载 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");
}

它给了我一个“无效的文件名”消息..

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

的输出echo $file

/server/php/files/roibay-business-plan.pdf

server”是我根文件夹中的一个文件夹。

4

2 回答 2

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
于 2012-08-08T18:53:22.560 回答
2

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

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

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

于 2012-08-08T19:02:16.960 回答