【问题标题】:Download images saved on Amazon S3下载保存在 Amazon S3 上的图像
【发布时间】:2019-10-03 03:17:48
【问题描述】:

我需要下载https://webapp.spypoint.com上传的图片。这些图像保存在 Amazon S3 中。此图片的 url 类似于:https://s3.amazonaws.com/spypoint/1111/2222/3333/img.jpg

我有登录 https://webapp.spypoint.com 的 ID 和密码。我的目标是直接使用 boto3 从 Amazon S3 下载图像。

我对此进行了研究,所有信息都是关于从我自己拥有的 Amazon S3 存储桶中下载图像的。就我而言,Amazon S3 存储/存储桶归 https://webapp.spypoint.com 所有。

【问题讨论】:

  • 有什么理由想要使用 boto3 而不是只使用请求和普通 HTTP?
  • 如果您的方法可以使用您的方法从 Amazon s3 下载图像,那应该没问题。但是,我还需要获取s3.amazonaws.com/spypoint/1111/2222 下的子文件夹列表。我可以用你的方法吗?

标签: python amazon-s3 download boto3


【解决方案1】:

如果它是一个公共存储桶,那么这将起作用:

from PIL import Image
from io import BytesIO
import requests

url = "https://s3.amazonaws.com/spypoint/1111/2222/3333/img.jpg"
Image.open(BytesIO(requests.get(url).content))

但是您不能以这种方式“探索”存储桶,例如获取列表等。您需要为此通过 S3 API,例如正如你所说,使用boto3。而且听起来好像不是公共存储桶。

如果是他们的存储桶,那么要通过 S3 API 访问它(例如使用 boto3),他们必须允许您访问它。或者他们有自己的 API?

【讨论】:

  • 是的。出于这个原因,我需要使用 boto3。另外,当我使用您的代码时,出现以下错误: OSError: cannot identify image file <_io.bytesio object at>
  • 那是因为您发布的链接不是图片,至少不是公共图片。使用可访问图像的 URL,它就可以工作。我会问 Spypoint 他们有什么建议。
  • 这不是我想要的。
猜你喜欢
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2017-04-03
  • 2011-12-20
  • 1970-01-01
相关资源
最近更新 更多