代码之家  ›  专栏  ›  技术社区  ›  Brian Ortiz

如何为上传类型站点组织文件系统中的文件?

  •  0
  • Brian Ortiz  · 技术社区  · 16 年前

    我想知道,对于一个以用户上传文件为中心的站点,是否存在在文件系统上组织文件的最佳实践。(不是像imageshack这样的托管网站,更像addons.mozilla.org)

    还是我分析过度了,应该把所有东西都放在一个文件夹里?

    2 回复  |  直到 16 年前
        1
  •  1
  •   SingleNegationElimination    16 年前

    我倾向于认为用户上传只是另一种类型的用户数据,所以它都进入数据库。显然,确保要用于此目的的数据库是一个很好的选择,例如,SQL数据库不一定正确。

    如果它有意义,我会尝试使用在站点使用模式上下文中有意义的URL模式,例如:

    example.com/username/users_file.jpg
    

    如果没有明显的方法可以做到这一点,而且我必须使用代理密钥,那么我只能使用它:

    example.com/files/abc123
    example.com/files/abc123/
    example.com/files/abc123/users_file.jpg
    

    这三个文件都是同一个文件。特别是, abc123 应用程序只需要查找文件,末尾的多余部分就存在了,这样浏览器就可以很好地提示文件保存到磁盘时应该命名为什么。

    这样做意味着,无论原始文件的名称是什么,它对用户始终是唯一的。即使用户希望上载100个同名文件,所有文件都是唯一的。

        2
  •  0
  •   redtuna    16 年前

    首先(可能很明显),把用户的文件放在一个专门的地方,这样他们就不会冒覆盖其他文件的风险。

    第二,如果需要大量的文件,那么可能需要子文件夹。最简单的方法是使用文件名的第一个字母作为文件夹。

    所以如果我上传“smile.jpg”,你可以把它存储在那里: S /微笑.jpg

    如果你非常受欢迎,而且文件太多,你可以用更多的字母。如果您希望拥有大量的用户,并且拥有大量的服务器,那么您可以想象通过节省 S .example.com/upload/ S /smile.jpg(但实际上,如果您有大量的服务器,那么您可能已经有了共享存储和加载的透明方式)。

    推荐文章