在网站上存储用户上传文件的最佳方法是什么?

时间:2011-07-27 23:24:28

标签: file web storage

我正在尝试创建一个网站,我需要在其中存储一些用户上传的文件(例如一些个人资料图片,一些xml文件等)。

那么存储这些文件的最佳方法是什么?

目前,我正在服务器上为每个注册的新用户创建一个新目录,并将每个用户的文件存储在各自的目录中,但有人告诉我这不是最佳方式。

那么,我该如何存储这些文件?我是否创建了一个公共目录&根据用户ID或与用户相关的内容命名文件或者为每个用户创建一个新目录??

2 个答案:

答案 0 :(得分:5)

可行的解决方案取决于您的要求,例如:你期待多少用户。每个用户一个目录的解决方案很快就会遇到一些文件系统限制(对于ext3,一个目录中的子目录的最大数量固定为32000)。

每个用户一个文件应该可以使用很长时间(请参阅:How many files in a directory is too many?)。

最后,如果您的用户群增长,您可以使用固定数量的分片(例如,基于用户ID)来限制目录数量和每个目录的文件数量(作为示例,请参阅{{3} })。

答案 1 :(得分:2)

你有几个选择。

  1. 您可以将它们作为文件存储在Web根目录之外的文件系统中。
  2. 您可以将它们作为二进制数据存储在MySQL等标准RMDBS中。
  3. 您可以使用专门存储文档的CouchDB或Redis等“NoSQL”数据库。
  4. 最好的方法取决于您的申请,时间表和您的经验。选项1可能是最简单的。方案2可能是最灵活的。如果选项3满足您的文档需求,它可能是最佳表现。