当用户单击下载链接时,我正在尝试下载文件。
在控制器中:
$response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));
return $response;
这是打开对话框以保存文件,但它说文件是 0 字节。并将其更改为:
$response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->setContent(readfile($filename));
return $response;
我得到一堆奇怪的字符而不是文件下载对话框。
最后,将“setContent”行切换为:
$response->setContent(file_get_contents($filename));
它返回一个 PHP 错误:
致命错误:允许的内存大小...
关于如何实现这一目标的任何线索?我以前在 PHP 中做过(没有 MVC),但我不知道通过 Symfony2 做这件事会缺少什么......
也许解决方案是在 PHP.INI 中设置 memory_limit,但我想这不是最佳实践......