バージョン 2.3 で撤廃: 代わりに cake-response-file を使用してください。
メディアビューを使うとユーザにバイナリーファイルを送ることができます。例えば、 ユーザーが直接参照できないようにするためにwebrootディレクトリの外にディレクトリを配置したいとします。 メディアビューを使うと/app/以下の特定のフォルダからファイルを持ってきて、 認証してからファイルを渡すといったことができます。
メディアビューを使うためにはデフォルトビューの代わりにメディアビューを使うことをコントローラの中で宣言する必要があります。 あとは、ファイルが何処にあるかを示すために追加パラメータを渡して下さい。:
class ExampleController extends AppController {
public function download() {
$this->viewClass = 'Media';
// app/outside_webroot_dir/example.zip をダウンロードする
$params = array(
'id' => 'example.zip',
'name' => 'example',
'download' => true,
'extension' => 'zip',
'path' => APP . 'outside_webroot_dir' . DS
);
$this->set($params);
}
}
ここではメディアビューの $mimeType に登録されていないmimeタイプのファイルを描画する例を示します。 また、デフォルトの app/webroot ディレクトリへの相対パスを使っています。:
public function download() {
$this->viewClass = 'Media';
// app/webroot/files/example.docx を描画
$params = array(
'id' => 'example.docx',
'name' => 'example',
'extension' => 'docx',
'mimeType' => array(
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
),
'path' => 'files' . DS
);
$this->set($params);
}