我正在尝试动态生成 CSV 文件,具体取决于用户选择作为报告输出的内容。使用 CakeResponse 检索数据并将其写入文件已完成,但是我正在努力将文件扩展名设置为“.csv”,该文件将作为普通文本文件下载。CakePHP 文档建议我这样做:
$this->response->type('csv');
..但即使这不起作用,我仍然得到一个文本文件。任何人都可以解释一下吗?请注意,我不是在寻找生成 CSV 文件的新方法,我只是想更改扩展名。谢谢你。
这是我下载文件的方式:
$this->response->body($this->constructFileBody($logs));
return $this->response;
这是方法'constructFileBody',虽然我认为它超出了这个问题的范围:
public function constructFileBody($logs = array()){
$content = "";
for($i = 0; $i < count($logs); $i++){
$row = $logs[$i]['EventLog'];
$line = $row['description'] . "," . $row['user'] . "," . $row['affected_user'] . "," . $row['report_title'] . "," . $row['date_created'] . "\n";
$content = $content . $line;
}
return $content;
}