Reputation: 82
I have a problem. I made a little download code. All i'm getting is a blank page. Url to download: https://jonasgamertv.com/download.php?file=header.png This is my code:
<?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.";
}
}
?>
Thanks for your help and time, Jonas
Upvotes: 0
Views: 52
Reputation: 2984
Your code runs fine; what I would do is check the path of your ../images
folder.
I added a new else
clause to tell you if the file does not exist. This will let you know when the file is not found, since your current code just skips that altogether.
<?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.";
}
}
Upvotes: 1