CakePHP

CakePHP2.3.Xでエクセルファイルなどをダウンロードさせる方法。

2013/09/04

前回のポストでエクセルファイルを動的に作成しましたが、その作成したファイルをダウンロードさせる方法も忘備録としてポストです。
メディアビュー(MediaView)を使うとあっさりと実現可能でした。

「メディアビュー」を使う

EC系サイトでしたら売上や顧客一覧をエクセルファイルでダウンロードさせたいという場合があると思います。
その時に役に立つ方法です。

[php]
function download()
{
// メディアビューを使用する
$this->viewClass = 'Media';

// 出力ディレクトリ名
$output_dir = 'report';

// ファイル名(年月)
$output_file_name = "REPORT" . "_" . date("YmdHis", time());

// 出力ファイル名.拡張子
$output_file_report = $output_file_name . ".xls";

// 出力パスを含む、ファイル名
$output_file_report_path = $output_dir . DS . $output_file_report;

// 文字コード変換
$output_file_report = mb_convert_encoding($output_file_report, "SJIS", "UTF-8");

//------------------------------------------------------------
//
// 前回のポストを参考に、エクセルファイルを作成(略)
//
//------------------------------------------------------------

// ファイルをダウンロードさせる
$params = array(
'id' => $output_file_report, // 出力ファイル名.拡張子
'name' => $output_file_name, // ファイル名(年月)
'download' => true,
'extension' => 'xls',
'path' => '../../public_html/' . $output_dir . DS, // appディレクトリからの相対パス
);

$this->set($params);
}
[/php]

以上で完成です。

$params['path']に設定するパスがちょっと難儀。
フルパスでも良いような気がするのですが、なぜか動かなかったので、相対パスで設定してみました。

[tgAmazonItemLookup asin="B009C73BSA" related="1"]

-CakePHP
-, , , ,