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

Language agnostic 如何为上载类型的站点组织文件系统中的文件?,language-agnostic,Language Agnostic,我想知道对于一个以用户上传文件为中心的站点,是否有在文件系统上组织文件的最佳实践。(不是像Imageshack这样的托管网站,更像是addons.mozilla.org) 还是我分析得太多了,应该把所有东西都放在一个文件夹里?首先(可能很明显),把用户的文件放在某个专用的地方,这样他们就不会有覆盖其他内容的风险 第二,如果您希望有很多文件,那么您可能希望有子文件夹。最简单的方法是使用文件名的第一个字母作为文件夹 所以如果我上传“smile.jpg”,你可以把它存储在那里:s/smile.jpg

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

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

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

第二,如果您希望有很多文件,那么您可能希望有子文件夹。最简单的方法是使用文件名的第一个字母作为文件夹

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


如果你非常受欢迎,但仍然有太多的文件,你可以使用更多的字母。如果你希望拥有大量的用户和大量的服务器,你可以想象通过节省s.example.com/upload/s我倾向于将用户上传视为另一种用户数据,因此所有这些数据都会进入数据库。显然,要确保用于此目的的数据库是一个很好的选择,例如,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个同名文件,所有文件都是唯一的