user1919
user1919

Reputation: 3938

Downloading CSV file with PHP

I am trying to download a CSV file with PHP but I can not make it to get the dialog box. I have changed the headers and used the readfile() function as shown here

This is my code:

$nodeId = 'something';
$filename = "/var/www/dkar/ruralBroadband/ruralApp/rural/csvExports/$nodeId.csv";

header('Content-type: text/csv');
header('Content-disposition: attachment; filename ="report.csv"');
readfile($filename);

** EDIT **

Tried also with this as suggested:

 header('Content-Disposition: attachment; filename="report.csv"');
 header('Content-Transfer-Encoding: binary');
 header('Content-Length: ' . filesize('report.csv'));

When I am checking the response in Firebug I can see the whole CSV file returned. Also the headers change into:

Content-Type    text/csv
Content-disposition attachment; filename ="report.csv"

So I can not figure out why I dont get the dialog box to save the file.

Upvotes: 0

Views: 1089

Answers (2)

user1919
user1919

Reputation: 3938

After all I didn't use the above method and I did that, which works fine and its more straight forward:

var ajaxurl = 'exportNodeData.php', // script to run
                data =  {nodeId:nodeId}; // data to pass
                $.post(ajaxurl, data, function (response) {     
                    document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip';

                }); 

This is the ajax request, which I execute in order to create the CSV file (which is also zipped). I then use this line:

document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip';

in order to force the download of the file.

Upvotes: 0

NaijaProgrammer
NaijaProgrammer

Reputation: 2967

Add these headers:

header('Content-Disposition: inline; filename="report.csv"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));

Upvotes: 2

Related Questions