Symfony 2 を使用して「ダウンロード」コントローラーを作成しています。これは、.csv ファイルのダウンロードを強制できるようにヘッダーを送信することを唯一の目的としていますが、正しく機能していません。
$response = new Response();
$response->headers->set('Content-Type', "text/csv");
$response->headers->set('Content-Disposition', 'attachment; filename="'.$fileName.'"');
$response->headers->set('Pragma', "no-cache");
$response->headers->set('Expires', "0");
$response->headers->set('Content-Transfer-Encoding', "binary");
$response->headers->set('Content-Length', filesize($fileName));
$response->prepare();
$response->sendHeaders();
$response->setContent(readfile($fileName));
$response->sendContent();
$fileName
は"info.csv"
文字列です。これはコントローラー内の私のアクションであり、return ステートメントはありません。オブジェクトを返そうとするとResponse
、意図した結果ではなく、ファイルの内容がブラウザに表示されました。
私が見つけた問題は、一部のページではinfo.csv file
.
No webpage was found for the web address: http://mywebpage.com/download
Error 6 (net::ERR_FILE_NOT_FOUND): The file or directory could not be found.
ファイルが存在すると完全に確信しているので、別のことが間違っているに違いありません。また、そのパスにリンクしている他のページからファイルを取得するため、routing.yml は正しく機能しています。Apache エラー ログには、それについては何も表示されません。
以前に Symfony 2 で .csv ファイルのダウンロードを強制した人はいますか? もしそうなら、私は何を間違っていますか?