0

私のプロジェクトでは、いくつかのファイルを webroot フォルダーの外に移動する必要があります (原因: セキュリティの問題)。しかし、画像、またはwebrootフォルダーに存在しないダウンロード可能なファイルを表示するように設定する方法がわかりません。フォルダ階層:

  • cms
    • アプリ
      • ウェブルート
      • data_file (ここに画像、動画、音声)
        • 画像
        • ビデオ
        • オーディオ

ファイルをサーバーに正常にアップロードした後、データベース内のファイルへの相対リンク ポイントを保存する必要があります。上記のフォルダ階層で、相対リンク形式を保存するにはどうすればよいですか? クライアントに画像(それら)を表示します

4

2 に答える 2

1

Cakephp には、フレームワークに組み込まれたメディア ビューがあります。これらのファイルは、プライベート ファイル システムの場所から提供できます。

public function download() {
    $this->viewClass = 'Media';
    // Download 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);
}

参考:メディアビュー

最初にファイルをアップロードしてから、ファイル名をデータベースに保存する必要があります。これにより、メディア ビューからファイルにアクセスするときに、ファイルの名前が確実にわかります。ファイルの種類 (拡張子) を保存する必要があります。これをビジネス ロジックで使用して、ファイルを強制的にダウンロードするか、コンテンツをブラウザにストリーミングするかを決定できます ('download' => false)。

Cake 2.3+ を使用している場合は、ファイルの送信も検討してください

于 2013-09-06T15:07:35.410 に答える
0
  1. このフォルダを URL から隠したい場合は、Sixthpoint のソリューションを利用できると思います。
  2. webroot の代わりに別のフォルダーが必要な場合は、.htaccess を変更します。
    
       RewriteEngine on
       RewriteRule ^$ app/webroot/ [L]
       RewriteRule (\.png|\.jpg)$ app/your folder/images/$1
       RewriteRule (\.mpg)$ app/your folder/videos/$1
       RewriteRule (\.mp3)$ app/your folder/audios/$1
       RewriteRule (.*) app/webroot/$1 [L]
    

一致したルールが最初に適用されます。しかし、このソリューションがあなたの目的に適しているとは思いません。

于 2013-09-09T06:37:49.230 に答える