在 Django 中存储用户文件的最佳架构模式是什么?

What would be the best architectural pattern to store user files in Django?

我正在寻找一个允许用户存储文件和文件夹的 Django-Rest web 应用程序,他们可以在我的前端查看这些文件和文件夹(想想:Dropbox、Google Drive 等)。

我知道 Django 有一个 built-in storage api,但在我看来我不能使用它,因为它只处理文件上传(我也在寻找上传目录和子目录)。这意味着我需要创建一个自定义方法来完成我想要的。

我无法理解如何处理我应该遵循的文件夹结构。

我正在考虑在每个用户注册到平台后为他们创建单独的文件夹。这些文件夹将以用户 uuid 的名字命名。例如:

  1. 用户:peter123 注册
  2. 分配了 uc3f-g239-h423-tx3y 的 uuid
  3. 在公共目录中创建了一个名为 uc3f-g239-h423-tx3y 的文件夹
  4. peter123 上传的所有文件和文件夹随后存储在文件夹中:uc3f-g239-h423-tx3y

所有后续用户也是如此,他们的个人文件夹名称由他们的 uuid 表示。

结构应该是这样的:

common
|
|_____uc3f-g239-h423-tx3y
|             |____peter123.txt
|             |____peter123-subfolder
|                        |_____peter123-subfile.csv
|
|_____du3y-dgp7-g9rq-23qp
|             |____bob123.txt
|             |____bob123.mp4
|             |____bob123-subfolder
|                        |_____bob123-subfile.mkv
|

这是实现我想要实现的目标的有效结构吗?我知道 ext3 等某些文件系统有子目录限制,但 ext4 等其他文件系统没有。

考虑到上述所有信息,我的问题是:

  1. 以这种方式存储文件是否有任何我需要注意的限制?

  2. Django 是否能够管理文件 uploads/downloads 或者我应该寻找其他方法来完成应用程序的这一部分?

我愿意接受所有意见,因为我知道可能有更好的方法来解决这个问题(我不知道)。我对此进行了大量搜索,但仍在努力寻找合适的答案。

或者,任何人都可以指出我可以从中了解该主题的任何好的资源吗?

AFAIK,您可以使用 django-storages 推送到 minio 或 amazon S3,通过自定义 def gen_path(self, instance, filename): 您可以非常接近您的目标