添加模型函数时,Cakephp响应(发送文件)会中断

时间:2013-12-01 14:38:14

标签: image cakephp response

我已经使用默认操作烘焙了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

1 个答案:

答案 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中的现有核心类冲突。您的模型命名方案需要更具创造性。