我在我的網站的應用程序中有一個文件夾,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