【问题标题】:Django: Best Practice for Storing Images (URLField vs ImageField)Django:存储图像的最佳实践(URLField 与 ImageField)
【发布时间】:2021-01-23 21:48:26
【问题描述】:

在某个项目中,我想在模型上存储图像。

例如:

  • 公司标志
  • 个人资料图片
  • 编程语言

最近我一直在通过 ImageField 上传使用 AWS S3 进行文件存储(主要托管在 Heroku 上)。

我觉得有比我一直在做的更好的方式来存储文件。

对于某些事情(例如上面的示例),我认为实际上只从更公开的 url 获取图像 url 比在我自己的数据库中占用空间更有意义。

对于 Django 社区中已经构建和部署过真正专业项目的专家,您通常是否通过 ImageField 将文件直接存储到 Django 媒体文件夹中?

还是您通常使用 URLField,然后从 API 中提取 url 或从网络中提取图像链接(例如,在任何 Google 图像上,右键单击并复制然后粘贴图像 URL)?

奖励:您的图像存储设置是什么样的?

希望这是有道理的。

提前致谢!

【问题讨论】:

  • 使用 URL 时的主要问题是,如果他们更改或删除图像/URL,您会怎么做。将图像存储在自己的数据库中更安全

标签: django django-models django-staticfiles django-settings


【解决方案1】:

标准就是您所描述的,使用 AWS S3 之类的东西来存储实际图像并处理数据库中的 URL。原因如下:

  1. 它很便宜。喜欢真的便宜
  2. 不是让您的网络服务器提供文件,而是将其卸载到客户端(例如,他们的浏览器从 S3 抓取文件)
  3. 如果您使用的是临时系统(如 Heroku),则唯一的选择是使用 S3 之类的系统。
  4. 控制。当然,您可以从其他不受您管理的地方提取图像链接。但这并不能扩展。如果该服务器离线会发生什么?如果他们把那张照片拿下来怎么办?这样,您就可以控制对象发生的情况。

VSCO 就是一个规模相当大但不足以运行自己的基础设施(如 Facebook/Instagram、Google 等)的互联网公司的例子。他们每天都会上传大量照片,并使用 AWS 进行处理。

【讨论】:

  • 谢谢!我从来不知道不同方法背后的原因,只是我觉得互联网上的图片中的 URL only 方法不是很安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2010-10-18
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多