xpoes
xpoes

Reputation: 61

php download file: header()

I need some eduction please. At the end of each month, I want to download some data from my webserver to my local PC. So, I've written a little script for that, which selects the data from the DB. Next, I want to download it. I've tried this:

$file=$month . '.txt';
$handle=fopen($file, "w");
header("Content-Type: application/text");
header("Content-Disposition: attachment, filename=" . $month . '.txt');
while ($row=mysql_fetch_array($res))
    {
    $writestring = $row['data_I_want'] . "\r\n";
    fwrite($handle, $writestring);
    }
fclose($handle);

If I run this, then the file is created, but my file doesn't contain the data that I want. Instead I get a dump from the HTML-file in my browser.. What am I doing wrong.. Thanks, Xpoes

Upvotes: 0

Views: 9171

Answers (2)

Lepanto
Lepanto

Reputation: 1413

Below script will help you download the file created

//Below is where you create particular month's text file
$file=$month . '.txt';
$handle=fopen($file, "w");
while ($row=mysql_fetch_array($res)){
    $writestring = $row['data_I_want'] . "\r\n";
    fwrite($handle, $writestring);
}
fclose($handle);
//Now the file is ready with data from database

//Add below to download the text file created
$filename = $file; //name of the file
$filepath = $file; //location of the file. I have put $file since your file is create on the same folder where this script is
header("Cache-control: private");
header("Content-type: application/force-download");
header("Content-transfer-encoding: binary\n");
header("Content-disposition: attachment; filename=\"$filename\"");
header("Content-Length: ".filesize($filepath));
readfile($filepath);
exit;

Upvotes: 3

DevZer0
DevZer0

Reputation: 13535

Your current code does not output a file, it just sends headers.

in order for your script to work add the following code after your fclose statement.

 $data = file_get_contents($file);
 echo $data;

Upvotes: 0

Related Questions