douba6361
2018-01-24 19:38
浏览 52
已采纳

下载无法按预期工作。 我是php的初学者

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

图片转代码服务由CSDN问答提供 功能建议

我遇到了问题。 我做了一些下载代码。 我得到的只是一个空白页。 下载: https:// jonasgamertv .com / download.php?file = header.png 这是我的代码:

 &lt;?php 
if(isset($ _ REQUEST [“file  “])){
 
 //获取参数
 $ images = array(”header.png“); 
 $ file = urldecode($ _ GET [”file“]);  //解码URL编码的字符串
 
 if(in_array($ file,$ images,true)){
 $ filepath =“../ images /”。  $ file; 
 
 //进程下载
 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();  //刷新系统输出缓冲区
 readfile(“$ filepath”); 
退出; 
} 
} 
其他{
 echo“文件不存在。”; 
} 
} 
?  &gt; 
   
 
 

感谢您的帮助和时间, Jonas

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douji6735 2018-01-24 19:51
    已采纳

    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.";
        }
    }
    
    已采纳该答案
    打赏 评论