在任何特定的视图中,如果我包含此链接:
<?php echo $this->Html->link('Download', ['controller' => 'Uploads', 'action' => 'download',$upload->id]) ?>
用户可以根据提供的$upload->id
下载文件。
我在上传器控制器中使用它作为我的下载功能:
$upload = $this->Uploads->find('all')->first();
$filePath = '\xampp\htdocs\project\webroot\uploads'; //file path to where the uploaded file is
$this->response->file($filePath . DS . $upload->name,
array('download' => true, 'name' => $upload->name)); //finds the corresponding name attribute in the Uploads table of the database, finds a matching name in the uploads directory and then downloads that file.
$this->set(compact('upload'));
但是,我想知道是否有办法让文件路径更灵活。在我的config.php
中,我设置了两个名为$host
和$basepath
的变量来分别引用Web主机(localhost)和项目名称(项目)。我将这些变量传递给AppController,任何View都可以访问它们。
但我似乎无法在下载功能的$filePath
变量中使用这些变量,所以如果我或其他任何人要更改主机或项目名称,而不是简单地更改config.php
,我或其他任何人都必须去找到并更改它(如果我在多个控制器中有多个下载功能,他们必须去改变它们中的每一个)。
答案 0 :(得分:2)
看一下CakePHP全局常量。您可以使用WWW_ROOT
轻松访问您的webroot路径。
https://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html