我尝试下载保存在文件夹'文件中的上传文件。在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)发现。任何帮助将不胜感激!
答案 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将被添加到路径前。