Django如何将图像存储在数据库中?

13

有没有现成的方法可以将图片直接存储在数据库中,而不是使用ImageField模型类型将其上传到MEDIA_ROOT?如果有这样的方法,那么如何提供这些图像呢?

谢谢


我建议使用AppEngine Blob Store服务。虽然不是开箱即用,但它是一个干净简单的解决方案。请参考此答案https://dev59.com/rGMl5IYBdhLWcg3wCDGW#18778381。 - Cartucho
3个回答

7

没有,这是有很好的理由的。从数据库中存储和服务图片效率极低。应该将它们存储在文件系统中,并直接从 Apache 服务器上提供服务。


27
或许您可以更详细地说明在数据库中存储图像会出现哪些低效问题? - jeff7091
3
请注意,不建议使用Apache来提供图像。 - Izz ad-Din Ruhulessin
1
@Izzad-DinRuhulessin 这是开玩笑的意思吗?如果不是,请提供引用。 - Foon
2
没有根据和错误的说法。如果服务器后面有缓存层,可能就不会出现问题。在数据库中存储可以增加可移植性——数据库转储是完整的数据集。 - user1472229
2
不应该被接受的答案。这取决于使用情况和数据库。 例如,使用SQLite存储和检索图像甚至可以比从文件系统检索快35%,请参见: https://www.sqlite.org/fasterthanfs.html - Wolkenarchitekt
1
并不是一个真正的答案。 - Cartucho

4

1

在Django中似乎没有内置的BlobField。不过,这里有一个可用的。我不确定它是否支持所有后端,但它可能适合你。有了它,你可以编写一个表单和视图,将图像作为附件上传并将其存储为数据库中的Blob。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接