「強制ダウンロード」アクションを作成しているときに、コントローラーによって生成されたすべての応答に UTF-8 BOM (»¿) が含まれていることがわかりました。これは通常のページには関係ありませんが、いくつかの Windows 表示ソフトウェアで JPG または ZIP が破損していると報告されているため、ダウンロードされたファイルには望ましくありません。したがって、主な目標は、コントローラーの出力から BOM を削除することです。
今まで私はこれをやった:
1-Win Grep を使用して、サイトのすべてのファイルで BOM チャンクを検索します。結果ゼロ。
2-同じ Web サーバーで非 symfony の test.php を作成し、クライアントで出力を確認します。BOM はありません。
何か案は?
よろしくお願いします、Z
更新: テスト コード 1. 結果の JPG には BOM が含まれます。
public function downloadAction(Request $request){
$filename= 'test.jpg';
$response = new Response(file_get_contents($filename));
$response->headers->set('Content-Type',mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
return $response;
}
テスト コード 2. 結果のページには BOM も含まれます。
public function downloadAction(Request $request){
echo 'hello world.';
exit;
}
更新 2: 私はちょうどこれを試みた: ゼロから真新しい symfony2 プロジェクトを作成し、同じ IDE を使用してテスト コントローラー/アクションを追加し、何を推測します: BOM はありません..だから、私の推測では、symfony サイト内の何かが応答をインターセプトしていると思います。 BOM チャンクを追加します。