CakePHPでCSVファイルをダウンロードさせたいときの作法

SPONSORED LINK

Pocket

cake_top.gif

ひさびさにCakePHPの開発メモ。エンジニアじゃない人はスルーの方向で・・・。

さてアプリをつくっていてCSVファイルをダウンロードさせたい、みたいなときがありますが、その際にCakePHPではこうするといいよ、というお話。なお、このコードに関しては主に青い人に聞きまくりました(笑)。

では早速。

■ やりたいこと

/user/download のURLにてユーザー全部の情報をCSVでダウンロードさせたい。

■ users_controller.php

コントローラーのdownload()を以下のように記述。

function download($id) {
$this->autoRender = false; // Viewを使わないように
Configure::write('debug', 0); // debugコードを出さないように
$csv_file = sprintf("users_%s.csv", date("Ymd-hi")); // 適当にファイル名を指定
header ("Content-disposition: attachment; filename=" . $csv_file);
header ("Content-type: application/octet-stream; name=" . $csv_file);
$buf = "";
// ごにょごにょして$bufにUserの内容を追加
// 注意点は二つ。
// 1. 一つにまとめたい文字列は""で囲む。
// 2. 文字列内に"がある場合は""としてエスケープ
print($buf); // 出力
return;
}

これで/users/download/にアクセスすればCSVファイルが出力されるはずです。よろしければどうぞ。

その他のCakePHP関連情報は以下からどうぞ。

» CakePHP修行! アーカイブ | IDEA*IDEA

ツイッターもやっています!

SPONSORED LINK

    • かとう
    • January 26th, 2009

    コントローラはごにょごにょだけで
    ビューでヘッダー出力とか
    CSVつくったほうがMVCに合致してませんか?

  1. No trackbacks yet.