下载没有按预期工作。我是php的初学者

时间:2018-01-24 19:38:41

标签: php download

我有问题。我做了一些下载代码。我得到的只是一个空白页面。 要下载的网址: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.";
    }
}
?>

感谢您的帮助和时间, 纳斯

1 个答案:

答案 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.";
    }
}