我的申请的一般结构:
[includes] - not accessible by the web
.. important database classes, etc
[public]
.. all files that the application publicly uses
我正在尝试确定应该在哪里存储[uploads]
文件夹。这是所有用户将存储其媒体(图像等)的地方
[uploads]
[user123]
mypic.jpg
mysecondpic.jpg
[user456]
picpic.jpg
yeah.jpg
目前,我在[public]
文件夹中有这个文件夹,但由于某种原因,我不相信这是正确的地方......
公众无法访问[includes]
文件夹,只有PHP可以在那里导航。
为了最佳实践,您对此有何看法?
答案 0 :(得分:2)
在兄弟目录中。也就是说,与includes/
和public/
处于同一级别的目录。
答案 1 :(得分:0)
这取决于你想要达到的目标。如果您要上传用户文章的示例照片,请将它们放在公开可见的文件夹中,例如/public/images
(图像以任何方式显示)。另一方面,如果您制作的应用程序(例如)从上传的文件中获利,最好将它们放在一个更高的级别,例如/uploads
,这样它们就不会公开访问,但是可以创建一个可以启用下载的代码。
答案 2 :(得分:0)
我想只有那个用户。我的意思是,没有brining"分享"媒体进入对话......这是未来的可能性。
在这种情况下,通常的设置是
将文件放在网络根目录之外(即在public
文件夹之外 - 确切地说,这取决于您)
构建一个PHP脚本,用于检查用户权限,并在所有内容都检出时传递所请求的文件。然后将为每个资源调用该PHP脚本,如下所示:
domain.com/resource.php?user=user123&file=mypic.jpg
(或使用漂亮的URL重写)
Apache和nginx模块使这个过程更有效,名为X-Sendfile。这可能值得一看。