django - 如何在 Django 中从 MongoDB 提供图像文件
问题描述
我正在构建一个将图像文件存储在 mongodb GridFS 中的 Django 应用程序。
我使用 Djongo 处理数据库并按照此示例https://www.djongomapper.com/using-django-with-mongodb-gridfs/将图像存储到数据库。
现在我可以,目前通过管理页面,将图像上传到数据库,需要使用这样的 URL 访问:
http://127.0.0.1:8000/files/60fae4884db41b9ad761c8b0
现在我有这个urls.py
urlpatterns = [
...
path('files/<str:fileid>', views.files, name='files'),
]
但在查看文件中,我不知道如何从数据库中检索图像:
@login_required
def files(request, fileid):
return response
我搜索了 Djongo 和 Django 的文档,但找不到简单的方法。
注意:在主数据库集合中,仅存储图像文件名。在 gridfs 集合“文件”中存储了一个 ID(URL 中的那个)、图像名称(到主集合的唯一链接)和其他详细信息。在“块”集合中,有一个 ID、一个 files_ID(文件 ID 的外键)和二进制数据。
解决方案
您不应该使用 Django 提供文件,您需要设置MEDIA_URL
并使其指向您的 Web 服务器,例如 NGINX 并使用
nginx-gridfs模块来提供文件。
这适用于所有类型的存储,提供静态文件不应该通过 Django 来完成,它是 Web 服务器的工作。
参考 检查“存储”部分下的警告
推荐阅读
- python-3.x - For循环将网页抓取的数据写入excel不会超过第一个链接
- maven - 将凭据从 Jenkins 传递给 Maven
- javascript - 如何等待另一个承诺填充的数组
- r - Find index position in nested lists for match
- mysql - 在mysql中使用多个连接时加快查询
- elasticsearch - 使用 Grafana 监控 ElasticSearch
- excel - 尝试查看单元格值是否 > 10% 时代码未运行
- c# - 需要数据进行比较时如何使用异步等待方法
- c# - Xamarin Forms - 如何让 TableView 和 ListView 扩展到 iPhone X 安全区域?
- javascript - Javascript 与桌面 Safari 的兼容性