【问题标题】:Send binary file (Excel file) to browser in CakePHP 3.3在 CakePHP 3.3 中将二进制文件(Excel 文件)发送到浏览器
【发布时间】:2017-07-03 13:37:25
【问题描述】:

我有一种方法尝试发送服务器上存在的 xlsx (Excel 2007) 文件。 xlsx 文件没问题,我可以从服务器(本地)打开它。

但是当从客户端下载文件时,它会损坏。方法如下:

    public function exportToExcel()
    {
        $fileName = ROOT . '/files/xls' . DS . 'assessors.xlsx';

        $this->autoRender = false;

        $assessors = $this->StaAssessors->find('all');

        $this->Utils->exportToExcel( $fileName, $assessors );

        $this->response->type('xlsx');

        $this->response->file( $fileName, ['download' => true ] );

        return( $this->response );
    }

我猜问题是excel文件被压缩了,我的方法有点无法正确处理要发送到浏览器的二进制文件。

下面我附上了浏览器接收到的标题。

我有什么遗漏的吗?

【问题讨论】:

  • 您必须进行一些调试(并显示结果),如果没有更多信息,人们所能做的就是在黑暗中拍摄,这不是很有帮助。请求文件时发送了哪些标头(检查您的浏览器网络控制台)?下载的内容与服务器上的内容究竟有何不同?

标签: excel file cakephp download send


【解决方案1】:

解决了在返回 $this->response 之前添加 ob_clean() 的问题。

【讨论】:

  • 如果这使您的问题消失了,那么您只是在隐藏实际问题,即在将响应发送到浏览器之前有数据正在输出。您应该尝试找出发生这种情况的原因并从根本上解决问题。
  • 感谢您的提示。我会做进一步调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2012-07-18
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多