媒体视图如何在cakephp中运行?

时间:2012-11-19 15:57:10

标签: file-io cakephp-2.1

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

现在我需要强制下载上传的文件。经过一些谷歌搜索并尝试this post的大部分建议后,我发现正确的方法是使用cakephps Media Views

我有什么:

  1. 带有记录表的主站点。 模型 - > 记录; - >记录;
  2. 这些记录有一个主键record_id。
  3. 在我的数据库中,我有一个 - >文件; 型号 - >文件;
  4. 这些文件有一个外键record_id和一个字段'url',其中包含相对路径的位置。
  5. 在创建包含文件的记录之后,文件被正确地上载到文件夹,该相对地址例如是webroot / files / record_name / file以及数据库中的表已正确更新。
  6. 我想做什么:

    1. 双击一个表格行后,打开一个模态对话框,其中包含有关该记录的信息。 (完成)
    2. 在此模式对话框中,我想显示将强制下载这些文件的链接。
    3. 我尝试了很多变体:

      //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 Revillini presented

      的方式完全相同

      这是我的实际问题

      由于这个问题没有完全解决,我认为这不仅对我有用,而且对于那些正在寻找这个问题的快速解决方案的人来说,可以快速演示Media-views如何工作。在制作动态下载功能后,我不知道在哪里移动:

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

1 个答案:

答案 0 :(得分:1)

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

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

它应该有用。