cakephp 2.1 xls标题内容类型在mac safari中不起作用

时间:2013-01-14 14:22:18

标签: cakephp-2.1

在我的Project excel布局中,我添加了

     <?php

      header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
      header ("Cache-Control: no-cache, must-revalidate");
      header ("Pragma: no-cache");
      header ("Content-type: application/vnd.ms-excel");/*.pdf,.xls*/
      header ("Content-Disposition: attachment; filename=Report.xls" );
      header ("Content-Description: Generated Report" );
     ?>
     <?php echo $content_for_layout ?> 

<?php header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); header ("Content-type: application/vnd.ms-excel");/*.pdf,.xls*/ header ("Content-Disposition: attachment; filename=Report.xls" ); header ("Content-Description: Generated Report" ); ?> <?php echo $content_for_layout ?>

并在我的控制器中          

     function export_xls($id=null) { 
        $this->render('export_xls', 'export_xls');
  } 
和export_xls.ctp保持空白。

在Windows中,它创建report.xls文件,但是它下载的mac os safari浏览器为report.xls.html 该怎么做我不明白。我正在使用cakephp 2.1

请帮我解决这个问题.....

2 个答案:

答案 0 :(得分:0)

.ctp或export_xls函数中需要有内容。您实际上并没有为文件输出任何内容。

答案 1 :(得分:0)

你的标题似乎没问题(虽然我认为Content-type应该是Content-Type),但尝试使用Cake的内置响应类。适用于XLS文件。在您的控制器中:

$this->response->file($path,array('download' => true, 'name' => 'Report.xls'));
return $this->response;