アプリケーションの相対アドレスであるwebroot/filesでファイルのアップロードを実行するように調整しました
次に、アップロードしたファイルを強制的にダウンロードする必要があります。いくつかのグーグルとこの投稿からの提案のほとんどのように試した後、私はこれを行う正しい方法がcakephpsメディアビューを使用することであると考えました
私が持っているもの:
- レコードのテーブルがあるメインサイト。モデル->記録; テーブル->レコード;
- これらのレコードには、主キーrecord_idがあります。
- 私のデータベースには、テーブル->ファイルがあります。モデル->ファイル;
- これらのファイルには、外部キーrecord_idと、その場所への相対パスを含むフィールド「url」があります。
- ファイルを含むレコードを作成した後、ファイルはフォルダーに正しくアップロードされます。このフォルダーの相対アドレスは、たとえばwebroot / files / record_name / fileであり、データベース内のテーブルは正しく更新されます。
私がやりたいこと:
- 1つのテーブル行をダブルクリックした後、レコードに関する情報を含むモーダルダイアログを開きます。(終わり)
- このモーダルダイアログでは、これらのファイルを強制的にダウンロードするリンクを表示したいと思います。
私はこれの多くのバリエーションを試しました:
//the retrieving of data after debug looks fine//
$this->loadModel('File');
$files = $this->File->find('list', array(
'conditions'=>array('File.record_id'=>$record_id),
'fields' => array('File.Name', 'File.Url');
))
//actual display of url
foreach($files as $file_name => $file_url) {
echo $this->Html->link($file_name, $file_url);
}
結果のリンクは、JamesRevilliniが提示したとおりに表示されます
これが私の実際の質問です
その問題は完全には解決されなかったので、私だけでなく、この問題の迅速な解決策を探している人にとって、メディアビューがどのように機能するかについての簡単なデモンストレーションを見ることが役立つと思いました。動的ダウンロード機能を作成した後、どこに移動するかわかりません。
public function download($name, $path) {
$this->viewClass = 'Media';
$params = array(
'id' => $name,
'name' => $name,
'download' => true,
'path' => $path
);
$this->set($params);
}