下载文件CakePHP 3

时间:2015-10-29 20:55:10

标签: php cakephp cakephp-3.0

我尝试下载保存在文件夹'文件中的上传文件。在webroot中。这是我在控制器中的下载功能:

   public function download($id=null) { $this->response->file(WWW_ROOT . DS .'files'. $id ,array('download'=> true,'id'=> 'file name.pdf',
        'name'=> 'file name'));

在视图中我有以下内容:

   <td>  <?= $this->Html->link('Download', ['controller' => 'Articles', 'action' => 'download',$id]) ?></td>

首先,这导致下载按钮(未定义的变量id)下出现错误,然后我得到(更全局)错误:请求的文件C:\ xampp \ htdocs \ articles \ src \ C:\ xampp \找不到htdocs \ articles \ webroot \ files或不可读。我真的不明白为什么部分C:\ xampp \ htdocs \ articles重复两次以及如何修复这些问题并下载上传的文件(不仅是函数$ this-&gt; response-&gt;文件中的指定文件,而是任何文件通过其id)发现。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:6)

public function download(){
    $file_path = WWW_ROOT.'uploads'.DS.'file_name.doc';
    $this->response->file($file_path, array(
        'download' => true,
        'name' => 'file_name.ppt',
    ));
    return $this->response;
}

答案 1 :(得分:1)

我认为file() id选项WWW_ROOT之后DS不需要public function download($id=null) { $filePath = WWW_ROOT .'files'. DS . $id; $this->response->file($filePath , array('download'=> true, 'name'=> 'file name')); }

file()

路径重复,因为您的文件路径错误,而APP正在public CloudSolrClient(String zkHost) 前面提供您提供的路径。

  

如果路径不是解析为文件的绝对路径,则APP将被添加到路径前。

source