【问题标题】:Structure of folder for uploaded files上传文件的文件夹结构
【发布时间】:2012-05-03 17:04:03
【问题描述】:

我正在实施一个允许用户上传文件的网站。我想知道上传文件夹应该如何构建,以便我将来可以轻松管理上传的文件。我应该为不同的用户提供不同的子文件夹(例如,user1 的upload/user1,user2 的upload/user2 等)还是应该将它们都放在同一个文件夹中?我应该重命名上传的文件吗? (我知道很多网站都这样做!)

【问题讨论】:

    标签: php file upload directory


    【解决方案1】:

    如果您不使用 BLOB,并且用户可能有任意数量的图像,那么我认为您应该使用子文件夹。例如,您可以创建一个以用户 ID 命名的子文件夹。原因之一是当文件夹包含大量文件时,访问时间会增加,因为查找具有指定名称的文件需要更多时间。您还可以在存储文件时重命名文件,以免它们的名称重叠。只是不要忘记将新生成的名称存储在数据库中。

    【讨论】:

    • 我遇到了一个解决方案,它告诉我按以下方式构建我的上传文件夹:主文件夹名为upload,由 3 个级别组成(例如:upload/0/0/file.jpg)。当文件夹upload/0/0 填充有1024 个文件时,会自动创建文件夹upload/0/1。文件夹 upload/0 可以有 1024 个子文件夹(upload/0/0upload/0/1023)。同样,文件夹upload 也可以有 1024 个子文件夹。因此,我们最多可以存储 2^30 个文件。如果用户每天一共上传 1024 个文件,那么他们需要 2873 年才能用完空间。你觉得可行吗?
    • 我认为这样做可能会更好:以用户ID命名第一级子目录。仅当您为用户上传的每张图片分配唯一 ID 时,下一步才有效。然后您可以尝试将二级子目录命名为 strval($imgId % DIVISOR_CHOSEN_BY_YOU)。在某些情况下,我认为这可能会减少每个子目录中的图像数量。请注意,我远非这方面的专家……
    【解决方案2】:

    例如,如果您想对未登录的任何人“隐藏”它们,重命名它们会很有用。只需将其原始名称存储在数据库中即可。

    此外,您始终可以将其全部存储在 BLOB 类型的 SQL 表中。可以是几个 GB,并允许您关联文件名、用户名等。

    【讨论】:

    • 一位同事曾经告诉我,我不应该使用 BLOB 类型,因为它可能会不必要地扩大数据库。无论如何,感谢您对文件重命名目的的回答,尽管我仍然对上传文件的位置感到困惑
    • 它会扩大数据库,但使用文件会扩大目录,那你的意思是什么?它根本不会减慢速度。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多