user3820928
user3820928

Reputation: 3

PHP readfile() not forcing download

When I run the function below it locates and reads the file, displaying the results in the my Chrome Dev Tools preview tab correctly in the csv format. But it's not downloading it. If I link directly to the file in my browser it downloads it, so it doesn't appear to be an .htaccess issue. I've used the example in the documentation and many variations of it found here on Stack Overflow but the results are the same: the file displays in my preview tab in dev tools (and the same goes with Firefox as well) but no download. My code:

public function download()
{
    $file = $this->dir;

    if (file_exists($file)) {

        header('Content-Description: File Transfer');
        header('Content-Type: application/csv');
        header('Content-Disposition: attachment; filename='. $file);
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }       
}

I'm developing locally with latest Wamp server. When I push/pull to my remote, the result is the same.

Upvotes: 0

Views: 751

Answers (1)

MajorCaiger
MajorCaiger

Reputation: 1913

From your question, it sounds like you might be trying to download your file via an AJAX request.

If so, I don't believe you can do this. Instead you could open the link to the file in a new window, which will successfully download the file.

Upvotes: 2

Related Questions