首页 > 解决方案 > 如何在 Python 中使用 S3 存储桶和 Boto3 将图像上传到 MongoDB

问题描述

我正在开发一个 Python 应用程序,其中所需的功能是网络摄像头用于接收实时视频源,并根据条件是否为真,单击图像并将其上传到数据库。

我使用的数据库是 MongoDB。据我了解,将图像直接上传到数据库不是正确的方法。所以,我想做的是以下几点:

  1. 从网络摄像头单击图像
  2. 图像被上传到 S3 存储桶(来自相同的 Python 脚本,因此可能使用 boto3
  3. 检索上传图像的 URL(这似乎是棘手的部分
  4. 然后这个 URL 和其他一些细节被上传到数据库。(这是容易的部分

我理想的工作流程是获取该图像并将其上传到 S3 存储桶,检索 URL,然后将此 URL 上传到数据库中的所有 .py 脚本。

我的问题是:如何将图像上传到 S3 存储桶,然后在 Python 脚本中通过 boto3 检索其公共 URL?

我也欢迎任何有关将图像存储到 MongoDB 的更好方法/策略的建议。我在一些页面上看到 GridFS 可能是一个很好的方法,但不建议频繁发生图像上传(实际上使用 AWS 是更可取的方式)。

标签: pythonmongodbamazon-web-servicesamazon-s3boto3

解决方案


您不需要“检索”公共 url,您可以在上传时指定存储桶和 s3 对象的名称,因此您已经有了需要知道公共 url 上传后的信息,它不像 s3 会在上传后为您的对象分配一个新的唯一名称。


推荐阅读