无法下载php中的文件。通过url传递的文件名

无法下载php中的文件。通过url传递的文件名,php,Php,我只是一个PHP初学者。我试图在单击url时下载图像文件 当我硬编码文件名时,它可以工作,但是当我尝试根据单击的url下载不同的图像文件时,它不工作。代码可能会以更好的方式解释它 单击url时的代码 <a href="./download.php?var=./img/Photo6.jpg" class="btn btn-2">Download brochure</a> 下载.php <?php $var=$_GET['var']; $filename=$

我只是一个PHP初学者。我试图在单击url时下载图像文件

当我硬编码文件名时,它可以工作,但是当我尝试根据单击的url下载不同的图像文件时,它不工作。代码可能会以更好的方式解释它

单击url时的代码

<a href="./download.php?var=./img/Photo6.jpg" class="btn btn-2">Download brochure</a>

下载.php

<?php   
$var=$_GET['var'];
$filename=$var;
$filename = './img/Photo6.jpg'; // this works
//$filename = $var; // this does not work
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers 
header('Content-Type: image/jpeg');

header('Content-Disposition: attachment; filename="'. basename($filename) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));

readfile($filename);

exit;
?>
使用时:

$_GET['var'];
您希望url构造具有?其中:

./download.php?var=./img/Photo6.jpg
在您的示例中:var=./img/Photo6.jpg告诉php变量GET[var]将获取值。/img/Photo6.jpg

因此,基于单击的url的不同图像文件必须具有

./download.php?var=XXX 

结构要工作。请确保所有URL都具有这种结构。

$var
的值吗?请记住
/path/to/file
等同于
path/to/file
/
什么都不做。我不完全理解你,但我通过var=./img/Photo6.jpg。在
download.php
do:
var\u dump($var);退出它是否打印您期望的字符串?我尝试了您的代码,并且能够下载一个没有任何问题的文件。当你没有硬编码的时候,你有没有收到任何错误?