Button To Download .txt File (PHP & HTML)

前端 未结 1 1918
感动是毒
感动是毒 2021-01-01 03:22

Ok so I want to my users to be able to download a .txt file with their username on it.

I\'ve checked everywhere, and so far I can\'t find what I want or

相关标签:
1条回答
  • 2021-01-01 03:58

    Why don't you have this code in a separate file, say download.php:

    <?php
        $file = "logs/{$session->username}.txt";
    
        if(!file_exists($file)) die("I'm sorry, the file doesn't seem to exist.");
    
        $type = filetype($file);
        // Get a date and timestamp
        $today = date("F j, Y, g:i a");
        $time = time();
        // Send file headers
        header("Content-type: $type");
    
        //** If you think header("Content-type: $type"); is giving you some problems,
        //** try header('Content-Type: application/octet-stream');
    
        //** Note filename= --- if using $_GET to get the $file, it needs to be "sanitized".
        //** I used the basename function to handle that... so it looks more like:
        //** header('Content-Disposition: attachment; filename=' . basename($_GET['mygetvar']));
    
        header("Content-Disposition: attachment;filename={$session->username}.txt");
        header("Content-Transfer-Encoding: binary"); 
        header('Pragma: no-cache'); 
        header('Expires: 0');
        // Send the file contents.
        set_time_limit(0);
        ob_clean();
        flush();
        readfile($file);
    
        //** If you are going to try and force download a file by opening a new tab via javascipt
        //** (In this code you would replace the onClick() event handler in the html
        //** button with onclick="window.open('www.someurl.com', '_blank');"
        //** - where 'www.someurl.com' is the url to the php page - I keep the file
        //** creation and download handling in the same file, and $_GET the file name
        // - bad practice? Probably, but I never claimed to be an expert),
        //** be sure to include exit(); in this part of the php... 
        //** otherwise leave exit(); out of the code.
        //** If you don't, it will likely break the code, based on my experience.
    
        //exit();
    ?>
    

    Please note that you have to change the quotes to double quotes, as you use a variable inside the 's. So, to expand the variable, change the first line to:

    $file = "logs/{$session->username}.txt";
    

    Here I consider, $session->username, as the variable you are trying to refer.

    And have this in the HTML:

    <button type="button" onclick="location.href='download.php'">Download All Your Keys On A .txt</button>
    

    And when you click on this button, it redirects to the download.php, that initiates a download of the txt file. As simple as that. But this requires you to have two files. And I don't understand the need for a button here. Why not just use a simple link like this?

    <a href="download.php">Download All Your Keys On A .txt</a>
    

    And if you need, you can style it using CSS.

    0 讨论(0)
提交回复
热议问题