2

我一直在努力解决这个问题一个小时。我用它从app/uploads/目录下载文件。它说目录未找到或不可读。然而我检查了它,它也在那里使用$file['File']['filename']. 我想知道我在这里缺少什么。?

$file = $this->File->findById($id);

$extension = pathinfo($file['File']['filename'],PATHINFO_EXTENSION);

$this->response->file('uploads'.DS.$file['File']['filename'], array(
    'download' => true,
    'id'       => $file['File']['filename'],
    'name'     => $file['File']['filename']
));
$this->response->type($extension);
return $this->response;
4

2 回答 2

3

确保您没有其他名为 File 的模型。如果是这样 - 它显然会覆盖 cakephp 的核心实用程序/文件模型。

于 2014-01-22T00:13:21.933 回答
1

“它说目录未找到或不可读。”

因此,您验证了该目录存在。您没有验证您的网络服务器用户是否可以读取它。检查目录本身以及目录内文件的文件权限。

为了快速修复,您可以暂时将权限更改为 777 以查看是否可以解决您的问题。如果是这样,那么您知道这只是确保文件权限正确的问题。不要将权限保留在 777,因为这是不安全的!

通常,您将拥有具有 755 权限的目录和具有 644 权限的文件,或类似的东西。

更新:目录权限完全独立于 XAMP。它们是操作系统的东西。在 Mac 上,您导航到 finder 中的文件,然后您可以右键单击并选择“获取信息”以查看和更改权限。我不使用 Windows - 但如果你用谷歌搜索“更改文件权限窗口”,那么就会出现堆,例如: http: //www.wikihow.com/Change-File-Permissions-on-Windows-7

作为一个单独的问题,阅读文件权限管理将是一个好主意。当您继续构建 Cake 站点或任何与此相关的网站时,您肯定需要了解它是如何工作的。

于 2013-08-14T03:20:25.867 回答