上下文
我刚刚写了一个PHP文件上传处理程序,它将任何传入的文件保存到我网站的上传目录中。 上传目录可通过Web公开访问,目前每个文件在使用数据库生成的唯一ID重命名后直接转储到其中。 除了图像之外,hander将允许除JS和PHP之外的任何文件类型。 最终可能成千上万的文件数量,但这需要几年才能实现。
我的问题:
将所有上传的文件放在服务器上的同一目录中是一个好主意还是坏主意,如果没有,请解释原因,以及哪种方法更好?
我注意到wordpress将它们存储在例如日期命名的目录中。
我能看到的唯一真正的缺点是,一旦有几千个文件,目录上的ls
可能是资源密集型的。
或者对一个目录中的文件数量或一个目录的总大小(运行Linux)有限制吗?
关于安全性的略微抢先注意事项:
上传处理程序对任何人都是安全的,但是登录管理员级用户上传文件,它也不会保存PHP或JS文件(至少我可以使用type
属性可靠地测试它们。 $_FILES
数组)因为这些可以由服务器执行。我计划实现的另一个安全措施是.htaccess
文件,它可以阻止对某些文件类型的请求。关于这方面的任何注释也会受到欢迎,但这不是这个问题的一部分。
答案 0 :(得分:2)
组织文件时没有固定的标准。但是,将所有文件放在一个目录中并不是一个好主意。它最终会开始影响系统的性能,特别是在索引时。
你可以做WordPress的工作,按年,月,日组织。您也可以按文件类型(扩展名)进行组织,因此有一个PDF目录,一个ZIP目录等,可能有年/月/日目录,以便进一步分类。
答案 1 :(得分:1)
如果是我,我会在白天或某个时间值上将其分解。您正在谈论(可能)数千个未知大小的文件。您最终必须围绕此构建存储,并且可能希望将部件移动到其他卷,存档等。
我还要确保每个文件都是chmod -x并给出一些中性后缀。
编辑:我也同意@NADH关于索引的问题。当文件夹中有数千个文件时,许多操作系统都会变得挑剔。