如何在Django中存储文件



如何将Django中的文件存储在模型中?

嗯,我知道FileField,但我不明白它是如何工作的,因为我希望能够存储文件,而没有路径,因为我正在为一个项目制作一个云存储网站,并希望能够存储该文件。

当用户想要更改文件名时,我怎么能更改它呢?

我将尝试简单地解释它是如何工作的,因为它将帮助您决定最适合您的解决方案。

  1. 本地系统存储

您将路径存储在数据库中,并将字段上的存储类设置为FileSystemStorage,这意味着django将知道如何从运行django应用程序的同一系统的硬盘进行写入和读取。因此,基本上,您存储的普通文件都引用了它们在目录中的位置。

  1. 云存储

类似于本地系统,但您保存的不是本地路径,而是uri位置,您将通过http或类似s3的自定义协议通过网络获取文件,而不是本地系统。为了实现这一点,您需要声明一个自定义存储类,在其中定义要从云存储上传和删除的自定义savedelete方法。

你可以自己写:https://docs.djangoproject.com/en/3.1/howto/custom-file-storage/

或者使用库:https://github.com/jschneier/django-storages

  1. 数据库存储

如果您知道文件是文本,您可以读取它们并将文本直接保存在数据库中以及相关的元数据中。如果它们是二进制的,你可以将它们存储为Blob类型——这里的风险是性能缓慢和数据库膨胀的风险。AFAIK将二进制文件存储在数据库之外是一种更好的做法。

最新更新