我存储用户的文件,以自己名字命名的目录类似最好的方式来储存大量的用户数据的
/username/file01.jpg
/username/file02.mp4
/username/file03.mp3
但是,如果更多的用户来上传多个文件,那么这造成问题,因为这将导致部分或许多用户迁移到另一个驱动器。我首先选择用户名目录解决方案,因为我不想要混合文件名。我不想更改文件名。另外如果另一个用户上传相同的文件名,那么它会产生问题,如果这些文件以原始名称存储。
什么能做到这一点的最好办法。我有一个解决方案,但想问社区是最好的方法。
我会用连续的文件夹,然后散列文件名的一些事情非常独特和存储到目录中。 我会做的是将文件和用户名的原始名称存储到数据库和存储在磁盘中的文件名的哈希值。
当有人要访问该文件,我会读该文件通过PHP要么更换名称或使得该文件被下载的原文件名会在这一点上做一些事情。
我只有这个建议的解决方案。你们有没有比这个更好的其他?
编辑:
我用的文件夹系统也是如此,并可能为第2方式,我将使用虚拟文件夹。 我的数据库是MongoDB
你们所有的答案都很棒,真的很有帮助。我想为每个人提供赏金,这就是为什么我离开它,社区可以自动提供。 谢谢你的答案,我真的很感激。
我发现用户ID(不变的值)是组织上载的更好方法。手动导航比较困难(查看文件夹不会告诉你上传的是谁),但它可以让用户名更改而不会破坏与其对应的资产文件夹。 – 2013-04-03 21:59:39
@JasonSperske嗨,但如果磁盘已满并且他们不断上传,我将如何处理用户及其文件。 – Abhishek 2013-04-03 22:04:55
由于您要为每个文件创建一个数据库条目,因此您可以存储“存储卷ID”,每当存储卷上的空间用尽时就会增加。提取文件时,您将获得一个用户标识,文件哈希和存储卷名称,您可以组合该文件来检索该资产。我只是使用亚马逊S3,让他们处理这样的东西,然而 – 2013-04-03 22:07:28