我已经使用默认操作烘焙了File模型和控制器。现在我正在尝试添加一个显示功能,可用于以受控方式显示图像。
我想保护图像,以便显示功能可以检查用户是否具有查看图像的权限(图像目录不在webroot中)。
我无法使它工作,但当我从头开始时,我设法发现真正最小的功能确实有效。
工作函数如下所示:
public function display($id) {
$this->response->file(ROOT.DS.'img'.DS.'noimage.jpg');
return $this->response;
}
当我添加例子时:
$test=$this->File->findById($id);
到函数的开头一切都会中断。
--> http://www.example.com/files/display/1
The requested file /var/www/example.com/www/img/image.jpg was not found or not readable
Error: The requested address '/files/display/1' was not found on this server.
我试过调试零,文件可以找到并且可读,显然是因为没有findById的函数可以工作。
有什么想法吗?
cakephp 2.4.3
答案 0 :(得分:1)
你的道路是完全错误的。
你调试()ROOT.DS.'img'.DS.'noimage.jpg'
实际拥有什么?
我打赌世界上所有的钱,如果你做的话,你可能会自己找到解决方案
img文件夹最有可能出现在webroot中
WWW_ROOT . 'img' . DS . 'noimage.jpg'
请注意,路径通常以DS结尾,因此无需再次添加。 所以,如果它确实是ROOT中的图像文件夹:
ROOT . 'img' . DS . 'noimage.jpg'
另请注意,您可以使用
轻松检查路径是否有效file_exists()
如果文件具有正确的文件权限,则应返回true。
编辑:
$this->File->...
:文件不是模型名称的好选择,因为它与Utility中的现有核心类冲突。您的模型命名方案需要更具创造性。