首页 文章

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

提问于
浏览
0

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

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

相关问题