3

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

4

1 回答 1

4

使用 MVC,您可以通过 开始文件下载short-circuitingMvcEvent为此,只需返回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;
于 2012-10-09T09:37:14.363 回答