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

问题描述 投票:0回答:3

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

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

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

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

file web storage
3个回答
7
投票

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

每个用户一个文件在很长一段时间内应该没问题(请参阅:目录中有多少个文件太多?)。

最后,如果您的用户群增长,您可以使用固定数量的分片(例如基于用户 ID)来限制目录数量和每个目录的文件数量(作为示例,请参阅 git 如何存储其对象松散格式)。


4
投票

你有几个选择。

  1. 您可以将它们作为文件存储在 Web 根目录之外的文件系统上。
  2. 您可以将它们作为二进制数据存储在标准 RMDBS(如 MySQL)中。
  3. 您可以使用专门用于存储文档的“NoSQL”数据库,例如 CouchDB 或 Redis。

最好的方法取决于您的申请、时间范围和您的经验。选项 1 可能是最简单的。选项 2 可能是最灵活的。如果选项 3 能够满足您文档的需求,它可能是性能最佳的。


0
投票

如何将它们作为文件存储在网络根目录之外的文件系统上?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.