Django:存储图像的最佳做法URLField与ImageField

问题描述

在项目中有些情况下,我想在模型上存储图像。

例如:

  • 公司徽标
  • 个人资料图片
  • 编程语言
  • 等等。

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

我觉得有一种比以往更好的存储文件的方式。

对于某些事情(例如上述示例),我认为实际上只是从更公开的URL获取图像URL而不是占用我自己的数据库中的空间。

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

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

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

希望这是有道理的。

谢谢!

解决方法

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

  1. 便宜。就像真的便宜
  2. 您无需将Web服务器提供文件,而是将其卸载到客户端(例如,其浏览器从S3抓取文件)
  3. 如果您使用的是临时系统(例如Heroku),则唯一的选择就是使用S3之类的东西。
  4. 控制。当然,您可以从不受您管理的其他位置拉取图像链接。但这没有规模。如果该服务器离线,会发生什么?如果他们把这张照片记下来怎么办?这样,您可以控制对象发生什么情况。

VSCO是一个不错的大型互联网公司的示例,但规模不足以运行自己的基础架构(如Facebook / Instagram,Google等)。他们每天要上传大量的照片,并使用AWS进行处理。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...