在 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
的名字命名。例如:
- 用户:peter123 注册
- 分配了
uc3f-g239-h423-tx3y
的 uuid
- 在公共目录中创建了一个名为
uc3f-g239-h423-tx3y
的文件夹
- 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
等其他文件系统没有。
考虑到上述所有信息,我的问题是:
以这种方式存储文件是否有任何我需要注意的限制?
Django 是否能够管理文件 uploads/downloads 或者我应该寻找其他方法来完成应用程序的这一部分?
我愿意接受所有意见,因为我知道可能有更好的方法来解决这个问题(我不知道)。我对此进行了大量搜索,但仍在努力寻找合适的答案。
或者,任何人都可以指出我可以从中了解该主题的任何好的资源吗?
AFAIK,您可以使用 django-storages
推送到 minio 或 amazon S3,通过自定义 def gen_path(self, instance, filename):
您可以非常接近您的目标
我正在寻找一个允许用户存储文件和文件夹的 Django-Rest web 应用程序,他们可以在我的前端查看这些文件和文件夹(想想:Dropbox、Google Drive 等)。
我知道 Django 有一个 built-in storage api,但在我看来我不能使用它,因为它只处理文件上传(我也在寻找上传目录和子目录)。这意味着我需要创建一个自定义方法来完成我想要的。
我无法理解如何处理我应该遵循的文件夹结构。
我正在考虑在每个用户注册到平台后为他们创建单独的文件夹。这些文件夹将以用户 uuid
的名字命名。例如:
- 用户:peter123 注册
- 分配了
uc3f-g239-h423-tx3y
的 uuid - 在公共目录中创建了一个名为
uc3f-g239-h423-tx3y
的文件夹 - 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
等其他文件系统没有。
考虑到上述所有信息,我的问题是:
以这种方式存储文件是否有任何我需要注意的限制?
Django 是否能够管理文件 uploads/downloads 或者我应该寻找其他方法来完成应用程序的这一部分?
我愿意接受所有意见,因为我知道可能有更好的方法来解决这个问题(我不知道)。我对此进行了大量搜索,但仍在努力寻找合适的答案。
或者,任何人都可以指出我可以从中了解该主题的任何好的资源吗?
AFAIK,您可以使用 django-storages
推送到 minio 或 amazon S3,通过自定义 def gen_path(self, instance, filename):
您可以非常接近您的目标