创建可下载的CSV从web搜索使用PHP和mySQL


Create downloadable CSV from web search using PHP and mySQL

我正在尝试创建一个可以由用户下载的CSV文件,而不是将数据永久保存在服务器上。

我使用mySQL和PHP的这个页面。我在网页上以正确的格式显示数据("echo"),但无法获得文件生成/下载…也许我错过了什么或在错误的地方寻找,但任何帮助将是伟大的!

我一直在尝试几个脚本,我自己的和其他我发现,但一个我目前有如下:

$file = 'export';
$colresult = mysql_query("SHOW COLUMNS FROM ".$tbl_name.""); 
if (mysql_num_rows($colresult) > 0) {  
while ($row = mysql_fetch_assoc($colresult)){   
$csv_output .= $row['Field'].", ";   $i++;  } } $csv_output .= "'n";   
$csvresult = mysql_query($sql); 
while ($rowr = mysql_fetch_row($csvresult)) {  
for ($j=0;$j<$i;$j++) {   $csv_output .= $rowr[$j].", ";  
}  
$csv_output .= "'n"; }   
$filename = $file."_".date("Y-m-d_H-i",time()).".csv"; 
header("Content-type: application/csv"); 
header("Content-disposition: attachment;filename=".$filename.".csv"); 
readfile("../documents/csv/".$filename.".csv");
$fp = fopen($filename, 'w');
foreach($csvret as $csvret){
fputcsv($fp, $csvret);
}
print $csv_output; 
print $filename; 

谢谢!

你需要传递一些header来强制web浏览器将文件识别为"可下载的":

<?php
header('Content-Description: File Transfer');
header("Content-Type: application/csv"); 
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;

只需将该代码添加到:

print $csv_output; 
print $filename;