【问题标题】:File Uploads - best practise for directory structure?文件上传 - 目录结构的最佳实践?
【发布时间】:2012-05-07 06:16:54
【问题描述】:

上下文:

我刚刚编写了一个 PHP 文件上传处理程序,它将所有传入的文件保存到我网站的上传目录。 上传目录可通过网络公开访问,目前每个文件在使用数据库生成的唯一 ID 重命名后直接转储到其中。 处理程序将允许除 JS 和 PHP 之外的任何文件类型,而不仅仅是图像。 文件数量最终可能会达到数千个,但这需要几年时间。

我的问题:

将所有上传的文件放在服务器上的同一目录中是个好主意还是坏主意,如果不是,请解释原因,以及什么更好的方法?

我注意到 wordpress 将它们存储在以日期命名的目录中。

我能看到的唯一真正的缺点是目录中的ls 可能是资源密集型的,一旦那里有几千个文件。 还是对一个目录中的文件数量或一个目录的总大小(运行 Linux)有限制?

关于安全性的一些先发制人的说明:

上传处理程序可以防止任何人登录管理员级别的用户上传文件,并且它也不会保存 PHP 或 JS 文件(至少我可以使用 @ 中的 type 属性可靠地测试它们) 987654323@ 数组),因为这些可以由服务器执行。我计划实施的另一个保护措施是一个.htaccess 文件,它阻止对某些文件类型的请求,以防万一。也欢迎任何关于这方面的说明,但这不是这个问题的一部分。

【问题讨论】:

    标签: php file-upload file-io directory


    【解决方案1】:

    在组织文件方面没有固定的标准。但是,将所有文件放在一个目录中并不是一个好主意。它最终会开始影响系统的性能,尤其是在索引方面。

    您可以做 WordPress 的工作,按年、月和日期进行组织。您也可以按文件类型(扩展名)进行组织,因此有一个 PDF 目录、一个 ZIP 目录等,其中可能包含年/月/日目录以便进一步分类。

    【讨论】:

    • 感谢您和@ethrbunny,这两个都是很好的建议,我会采纳他们的。我非常喜欢按类型而不是日期等分隔文件的想法,如果我能可靠地检测到文件类型,那么这就是我要走的路。再次感谢
    【解决方案2】:

    如果是我,我会按天或某个时间值分解它。您正在谈论(可能)数千个未知大小的文件。您最终将不得不围绕此构建存储,并且可能希望将部分移动到其他卷、档案等。

    我还会确保每个文件都是 chmod -x 并给出一些中性的后缀。

    编辑:我也同意@NADH 关于索引的看法。当一个文件夹中有数千个文件时,许多操作系统会变得很挑剔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2017-05-22
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多