ユーザーがダウンロードリンクをクリックしたときにファイルをダウンロードしようとしています。
コントローラの場合:
$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を設定することですが、それはベストプラクティスではないと思います...