メディアビュー

class MediaView

バージョン 2.3 で撤廃: 代わりに ファイルの送信 を使用してください。

メディアビューを使うとユーザにバイナリーファイルを送ることができます。例えば、 ユーザーが直接参照できないようにするために 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';
    // Render 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);
}

設定できるパラメータ

id
ID はファイルサーバー上の拡張子を含むファイル名です。
name
ユーザーに送られるファイルの名前をnameで指定することができます。 拡張子を除いた名前で指定して下さい。
download
ダウンロードを強制するためのヘッダを送るかどうかを指示する真偽値です。
extension
ファイルの拡張子です。これは受理可能なmimeタイプの内部リストに一致します。もし、 mime タイプがリストにない場合 (または mimeType パラメータで渡されたものに 一致しない場合)、ファイルはダウンロードされません。
path
ディレクトリセパレータで終わるフォルダ名です。パスは絶対パスにすべきですが、 app/webroot フォルダからの相対パスも可能です。
mimeType
追加の mime タイプを含む配列です。この配列は、MediaView が受け付けられる mime タイプの内部リストにマージされます。
cache
真偽値または整数値です。もし true が渡された場合、ブラウザはファイルを キャッシュすることを許可されます (もし設定されていない場合、デフォルトでは false です)。 それ以外の場合、キャッシュの有効期限が秒数で渡されます。