【问题标题】:How to upload an image to MongoDB using an S3 bucket and Boto3 in Python如何在 Python 中使用 S3 存储桶和 Boto3 将图像上传到 MongoDB
【发布时间】:2021-04-16 07:29:43
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: python mongodb amazon-web-services amazon-s3 boto3


    【解决方案1】:

    如果您知道 S3 存储桶和名称,则可以解释 S3 对象的 URL:

    https://{bucket}.s3.{region}.amazonaws.com/{key}

    如果您仍然使用 Python,则使用 boto3 将是上传文件的最简单方法。 在此处查看我关于如何上传文件的不同方式的另一个答案:https://stackoverflow.com/a/67108609/13245310

    【讨论】:

    • 这很有帮助!我会处理这个的,谢谢!如果我在途中遇到任何障碍,我会尽快回复您。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2019-06-12
      • 2020-02-03
      • 1970-01-01
      • 2021-02-10
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多