0

我正在使用 CakePHP 执行此代码:

查看文件

<?php
   if (isset($csv_filename)) {
      header("Content-Disposition: attachment; filename=$csv_filename");
   }
?>
<?=$csv?>

当我运行此页面并下载文件(打开方式)时,它会在 Google Chrome 或 Firefox 等网络浏览器上打开。我希望使用打开此文件 在此处输入图像描述

我的预期输出应该是这样的:

在此处输入图像描述

实际上,自从我们迁移到 CakePHP 2.2.2 之后,一切都运行良好。

对此有任何想法,您的帮助将不胜感激!谢谢 :)

4

2 回答 2

2

添加一个标题,告诉浏览器这是什么 mimetype,就像这样;

header('Content-Type: application/vnd.ms-excel; charset=utf-8')
于 2013-03-20T06:49:06.157 回答
1

要将文件下载为 CSV,请设置您的路由以检测 CSV。在您的 routes.php 文件中,确保您已为 CSV 设置解析扩展名:-

Router::parseExtensions('csv');

然后在您的控制器中设置 CSV 的文件名并确保您使用的是不输出标记的布局(例如默认的 ajax.ctp):-

$this->response->download("$csv_filename.csv");
$this->layout = 'ajax';

还要确保您RequestHandler在控制器的组件列表中有:-

public $components = array('RequestHandler');

您只需要将您的操作模板放在控制器视图的 csv 目录中。

如果它仍然不起作用,那么可能有一些标记需要删除。Cake 的错误可以做到这一点。

于 2013-03-20T10:43:25.923 回答