我正在尝试在用户点击下载链接时下载文件.
在控制器中:
$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;
Run Code Online (Sandbox Code Playgroud)
这是打开保存文件的对话框,但它说文件是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;
Run Code Online (Sandbox Code Playgroud)
我得到了一堆奇怪的字符而不是文件下载对话框.
最后,将"setContent"行切换为:
$response->setContent(file_get_contents($filename));
Run Code Online (Sandbox Code Playgroud)
它返回一个PHP错误:
致命错误:允许的内存大小......
关于如何实现这一点的任何线索?我之前在PHP中做过(没有MVC),但我不知道通过Symfony2做什么可能会遗漏...
也许解决方案是在PHP.INI中设置memory_limit,但我想这不是最好的做法......