我想知道在我的php / mysql应用程序的文件系统中组织文档的好方法是什么。文档的所有信息都存储在db中,我对文件系统组织很好奇。这是一个很好的方法吗?还有更好的方法吗?
主文件夹
/documents
每个客户一个文件夹
/documents/client1
每个客户上传文件
/documents/client1/queue
用户填写表单后,文档将保存到数据库并移动到此文件夹中
/documents/client1/docs
文档的原始文件系统名称存储在数据库中,文件系统名称类似于md5($ time。$ filename。$ client_id),文档路径如下所示
/documents/client1/docs/6f99caa11e78697612d8f1b4481cd76a.pdf
我需要(最小)pdf的第一页用于拇指和从第一页读取的自动条形码
/documents/client1/docs/6f99caa11e78697612d8f1b4481cd76a/6f99caa11e78697612d8f1b4481cd76a-0.gif
我也有
/documents/client1/scan
来自扫描程序的文件,以便用户可以在数据库中导入它们,然后重命名并移动到: /文档/客户端1 /文档
我想知道我是否应该将特定日期的文件放在这样的日期文件夹中:
/documents/client1/docs/20110915/6f99caa11e78697612d8f1b4481cd76a.pdf
或者我应该使用完全不同的文件夹结构?
答案 0 :(得分:0)
为什么不对临时(上传)文件只使用一个公共文件夹?它可以使维护程序更容易(例如删除所有旧文件)。
我想知道我是否应该将特定日期的文件放在日期文件夹中 这样:
/documents/client1/docs/20110915/6f99caa11e78697612d8f1b4481cd76a.pdf
如果日期由您的数据库处理,则不必要。然而,如果由于某种原因你需要手动访问这个文件(不使用你的界面),它可能会有所帮助......
最后但并非最不重要的是要了解您的文件系统的限制。在某些filesytem / os上,你可以限制每个文件夹的文件数量(很大但仍然)。
答案 1 :(得分:0)
我会根据文件名优先使用散列文件组织的结构。
/documents/6/f/9/6f99caa11e78697612d8f1b4481cd76a.pdf
这将保持良好的文件访问权限,并且如果需要,它可以更容易地使结构更深入。
将日期用作目录的问题在于文件位置依赖于可能发生变化的一些信息(我们永远不知道!)