我有问题。我做了一些下载代码。我得到的只是一个空白页面。 要下载的网址:https://jonasgamertv.com/download.php?file=header.png 这是我的代码:
<?php
if(isset($_REQUEST["file"])){
// Get parameters
$images = array("header.png");
$file = urldecode($_GET["file"]); // Decode URL-encoded string
if(in_array($file, $images, true)){
$filepath = "../images/" . $file;
// Process download
if(file_exists($filepath)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
flush(); // Flush system output buffer
readfile("$filepath");
exit;
}
}
else{
echo "File does not exist.";
}
}
?>
感谢您的帮助和时间, 纳斯
答案 0 :(得分:1)
你的代码运行良好;我要做的是检查../images
文件夹的路径。
我添加了一个新的else
子句来告诉您文件是否不存在。这将告诉您何时找不到该文件,因为您当前的代码只是完全跳过该文件。
<?php
if(isset($_REQUEST["file"])){
echo 'Loading...';
// Get parameters
$images = array("header.png");
$file = urldecode($_GET["file"]); // Decode URL-encoded string
if(in_array($file, $images, true)){
$filepath = "images/" . $file;
// Process download
if(file_exists($filepath)) {
echo 'Preparing download...';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
flush(); // Flush system output buffer
readfile("$filepath");
}
else
{
echo 'File does not exist.';
}
}
else{
echo "Not authorized.";
}
}