我想知道是否有任何最佳实践来组织文件系统上的文件,以便以用户上传文件为中心。 (不是像Imageshack这样的托管网站,更像是addons.mozilla.org)
或者我是否过度分析了这一点并将所有内容放在一个文件夹中?
答案 0 :(得分:1)
我倾向于将用户上传视为另一种用户数据,因此它们都会进入数据库。显然,请确保您要使用的数据库是一个很好的选择,例如,SQL数据库不一定正确。
如果有意义,我尝试使用在网站使用模式的上下文中有意义的网址模式,例如:
example.com/username/users_file.jpg
如果没有明显的方法可以做到这一点,而且我必须使用代理键,我只是忍受它:
example.com/files/abc123
example.com/files/abc123/
example.com/files/abc123/users_file.jpg
这三个都是同一个文件。特别是,abc123
是应用程序需要查找文件的全部内容,最后的额外位是有的,这样浏览器就可以很好地提示文件在保存到磁盘时的名称。
这样做意味着无论原始文件的名称是什么,它始终是用户唯一的。即使用户希望上传100个具有相同名称的文件,也都是唯一的。
答案 1 :(得分:0)
首先(可能很明显),将用户的文件放在一个专门的地方,这样他们就不会冒险覆盖其他东西。
其次,如果您需要大量文件,那么您可能希望拥有子文件夹。最简单的方法是使用文件名的第一个字母作为文件夹。
所以如果我要上传“smile.jpg”,你可以把它存储在那里: s /smile.jpg
如果您非常受欢迎并且文件太多,则可以使用更多字母。如果您希望拥有大量用户并拥有大量服务器,您可以想象通过保存 s .example.com / upload / s / smile来分割工作.jpg(但实际上,如果你有大量的服务器,那么你可能已经有了一种共享存储和加载的透明方式)。