我在我的网站的应用程序中有一个文件夹,data
,它不在web根目录中。这是为了提高安全性,所以只有特定的人才能访问它。我都用过,从看CakePHP的文档中的代码如下:在webroot之外访问文件夹/文件仍在应用程序路径中?
foreach($ImageToSort as $FileDisplayKey => $FileDisplayData) {
$FileName = $ImageToSort[$FileDisplayKey]['Fileinfo']['filename'];
$WholePathName = 'data/'.$FileName;
}
$this->response->file($WholePathName);
return $this->response;
它加载的文件,但不是我的视野内(上面的代码是在一个视图中,$ImageToSort
从内查找调用设置我控制器)。
那么我怎样才能加载文件,不坐在一个类似的循环的webroot,所以我可以查看他们,并以我选择的方式将他们放置在我的网站?
PS。我不能把这些文件放在webroot文件夹中,因为有些人只需要知道文件的名称就可以得到它。访问这些文件需要保持少数。
非常感谢给予任何帮助,
格伦
UPDATE:
我使用2.4和从我读意见没有什么,我应该使用媒体,但“发送文件'是取代他们的电话。我试图用下面的代码使用它们:
$this->viewClass = 'Media';
$params = array(
'id' => $FileName,
'name' => 'example',
'extension' => 'jpg',
'path' => APP . 'uploads/test' . DS
);
$this->set($params);
debug($params['id']);
$name = $params['id'];
$path = $params['path'];
$filename = $path.$name;
//echo 'name::' .$name;
echo "<img src=";
echo $filename;
echo ">";
这无法找到该文件,除非我的文件放入/webroot/data/test
,然后显示它的罚款。但那完全没有意义?我只需要选定的用户查看选定的文件的安全问题。
下面的代码不工作在/app/data/test
路径内查看该文件,
$this->autoRender = false;
$this->response->file(Configure::read('uploads').$WholePathName);
但这代码没有区别在控制器或视图中使用时,它仍只显示文件和没有布局或样式或标题或任何东西。再次,这是完全没有意义的。
必须有一种方法可以让我的文件访问并读取我需要的文件/文件夹。
格伦
看看http://book.cakephp.org/2.0/en/views/media-view.html – Jelmer
我已经看过它的替代品,我正在使用CakePHP 2.4 - 发送文件http:// book。 cakephp.org/2.0/en/controllers/request-response.html#cake-response-file。但是,当我使用它/做一个文件调用它将整个文件加载到浏览器中,而不需要我的布局! –
你在那里添加的代码有点危险!你使用'app'文件夹作为基础,这意味着你可以传递例如'Config/database.php'并检索文件内容!您应该使用一个额外的文件夹(其中只包含应该可访问的文件),如我的示例所示。 – ndm