File io 在cakephp中媒体视图是如何工作的?

File io 在cakephp中媒体视图是如何工作的?,file-io,cakephp-2.1,File Io,Cakephp 2.1,我已安排在我的应用程序相对地址webroot/files上进行文件上载 现在我需要强制下载上传的文件。经过一些谷歌搜索和尝试后,我发现正确的方法是使用cakephps 我所拥有的: //the retrieving of data after debug looks fine// $this->loadModel('File'); $files = $this->File->find('list', array( 'conditions'=>array('File

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

现在我需要强制下载上传的文件。经过一些谷歌搜索和尝试后,我发现正确的方法是使用cakephps

我所拥有的:

//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);
}
  • 主站点有一个记录表模型->记录表格->记录
  • 这些记录具有主键记录id
  • 在我的数据库中有一个->文件模型->文件
  • 这些文件有一个外键记录id和一个字段“url”,其中包含指向其位置的相对路径
  • 使用文件创建记录后,文件将正确上载到文件夹,该文件夹的相对地址为webroot/files/record\u name/file,并且数据库中的表将正确更新
  • 我想做什么:

    //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);
    }
    
  • 双击一个表行后,打开一个包含记录信息的模式对话框。(已完成)
  • 在这个模式对话框中,我想显示将强制下载这些文件的链接
  • 我尝试了许多不同的方法:

    //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);
    }
    
    结果链接看起来正是这样

    这是我真正的问题

    由于这个问题还没有完全解决,我想这不仅对我有帮助,而且对任何正在寻找这个问题的快速解决方案的人来说都会有帮助,看看如何快速演示这个问题。制作了动态下载功能后,我不知道要搬到哪里:

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

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

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


    它应该可以工作。

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

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

    它应该会起作用