PHP5.3下载CSV
当用户单击一个按钮时,它将下载一个csv文件。它适用于IE9和Chrome,但不适用于Firefox。在Firefox20中,没有设置内容类型,因此它是作为Firefox HTML文档下载的PHP5.3下载CSV,php,cakephp,cross-browser,mime-types,cakephp-2.3,Php,Cakephp,Cross Browser,Mime Types,Cakephp 2.3,当用户单击一个按钮时,它将下载一个csv文件。它适用于IE9和Chrome,但不适用于Firefox。在Firefox20中,没有设置内容类型,因此它是作为Firefox HTML文档下载的 $filename = 'exportedLogs.csv'; header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header('Content-Description:
$filename = 'exportedLogs.csv';
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=" .$filename);
header("Expires: 0");
header("Pragma: public");
$csv_file = fopen('php://output', 'w');
$header_row = array('id', 'project', 'customer', 'time spent');
fputcsv($csv_file, $header_row);
foreach ($logs as $log) {
$log = array(
$log['Log']['id'],
$log['Log']['project_id'],
$log['Log']['customer_id'],
$log['Log']['time_spent']
);
fputcsv($csv_file, $log);
}
fclose($csv_file);
我发现标题没有改变的原因是因为cakePhp。对于其他有此问题的人,您必须做两件事:
您是否尝试了
内容类型(请注意大写字母T)?是的,我还尝试了在内容类型中添加charset=UTF-8。也许再添加一个标题选项会有所帮助。看,我尝试了应用程序/强制下载,但也没有成功。根据您添加到问题中的标记,您使用的是CakePHP。您使用的是什么版本的CakePHP?你把这段代码放在哪里了?CakePHP 2.x中设置内容类型和响应头的官方方法是通过响应对象。请参阅这里的文档。谢谢,我更改了它。我也在努力将它移到App/Lib目录中。这可能也值得一读,它是关于JSON和XML的,但是你可以对CSV@thaJeztah使用相同的逻辑-谢谢你的帮助。标题没有被更改的原因是我没有在parseExtensions中启用“csv”,并且我还向表单操作添加了一个.csv扩展名。我会更新上面的答案。