1

我已经安排在我的应用程序相对地址上进行文件上传:webroot/files

现在我需要强制下载上传的文件。经过一些谷歌搜索并尝试了这篇文章中的大多数建议后,我发现了正确的方法是使用 cakephps媒体视图

是)我有的:

  1. 带有记录表的主站点。模型->记录;-> 记录;
  2. 这些记录有一个主键record_id。
  3. 在我的数据库中,我有一个Table -> files;模型-> 文件;
  4. 这些文件有一个外键 record_id 和一个字段 'url' 及其位置的相对路径。
  5. 使用文件创建记录后,文件正确上传到文件夹,其相对地址为例如 webroot/files/record_name/file,并且数据库中的表已正确更新。

我想做的事:

  1. 双击一个表格行后,打开一个模式对话框,其中包含有关记录的信息。(完毕)
  2. 在此模式对话框中,我想显示将强制下载这些文件的链接。

我尝试了很多变体:

//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);
}

生成的链接看起来与James Revilini 呈现的完全一样

这是我的实际问题

由于该问题尚未完全解决,我认为这不仅对我有帮助,而且对任何正在寻找该问题的快速解决方案的人都可以快速演示媒体视图的工作原理。制作动态下载功能后,我不知道该移到哪里:

    public function download($name, $path) {
    $this->viewClass = 'Media';
    $params = array(
        'id'        => $name,
        'name'      => $name,
        'download'  => true,
        'path'      => $path
        );
        $this->set($params);
    }
4

1 回答 1

1

将资源的模式对话框中的链接指向download()函数。

将 传递Record.id给该函数。在其中找到文件并自动渲染它。

它应该工作。

于 2012-11-20T07:51:16.153 回答