我正在尝试创建下载按钮,以便用户只需单击按钮即可下载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
”是我的根文件夹中的文件夹。
答案 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"))