0

当用户单击一个按钮时,它将下载一个 csv 文件。它适用于 IE9 和 Chrome,但不适用于 Firefox。在 Firefox 20 中,没有设置内容类型,因此它作为 Firefox HTML 文档下载。

       $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);
4

1 回答 1

1

我发现标题没有改变的原因是因为 cakePhp。对于遇到此问题的其他人,您必须做两件事:

  1. 添加 'csv' 到 Router::parseExtensions('csv');
  2. 将“.csv”添加到表单中的操作

@ThaJeztah 提供了一个可能对其他人有帮助的链接。它适用于 json/xml,但主体也可用于 csv。

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#json-and-xml-views

于 2013-04-11T20:13:40.480 回答