サーバ上のCSVファイルが綺麗にダウンロードされない。

CSVファイルのダウンロードダイアログを出す方法で、サーバ上のCSVファイルを
ダウンロードすると、ファイル内に余分な情報が一緒に出力されていました…(´・ω・`)



ダウンロードしたCSVファイルを開くと、CSVデータの後に、

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta

のようなソースがくっついてしまいます…
(CSVダウンロードのリンクが張られている画面の、一部ソースです)

header("location".ファイル名);

とすると、ブラウザ上部にCSVの内容だけが表示されるのですが…



調査した結果、原因が判明!
実は上記の処理が、プログラムでどう扱われているかというと、画面上で
CSVファイルダウンロードのリンクをクリックすると、

  1. Controllerで定義されたActionに遷移
  2. ActionでModel呼び出し
  3. ModelでCSVダウンロードのfunction呼び出し
  4. CSVダウンロードのリンクがある画面をrender

という処理が行われるのですが、「4」を消したところ、CSVファイルが綺麗に
出力されるようになりました☆


CSVダウンロードすることで画面が変に遷移しないように、と思って上記の「4」
を入れたのですが、余計なお世話だったんですね(´;ω;`)ウッ…


headerメソッドの書き方とか、キャッシュとか色々試しました…
本件の調査だけで午前中つぶれました…orz