我需要提供存储在服务器上的下载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”,但这只是转储头+二进制数据的字符串输出。
答案 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;