通过Zend下载excel文件

时间:2012-10-09 07:55:27

标签: http-headers zend-framework2

我需要提供存储在服务器上的下载excel文件。但我无法在ZF2中找到下载示例。我正在尝试以下代码

$response = new Response();
$response->getHeaders()->addHeaders(array(
    'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    'Content-Disposition' => 'attachment;filename="forecast_template.xlsx"',
    'Cache-Control' => 'max-age=0',
));
$response->setContent(file_get_contents($xlsx_file_name));

但它没有用。我尝试了setRawBody但是这给了未定义方法的错误。我也尝试了“echo $ response”,但这只是转储头+二进制数据的字符串输出。

1 个答案:

答案 0 :(得分:4)

使用MVC,您可以short-circuiting MvcEvent启动文件下载(要执行此操作,只需返回Response实例而不是ViewModel)。

以下示例代码段适用于我:

use Zend\Http\Headers;

(...)

$response = $this->getEvent()->getResponse();
$response->setHeaders(Headers::fromString("Content-Type: application/octet-stream\r\nContent-Length: 9\r\nContent-Disposition: attachment; filename=\"blamoo.txt\""));

$response->setContent('blablabla');

return $response;