当前位置: 首页 > 面试题库 >

使用boto将公共URL上可用的图像上传到S3

党博超
2023-03-14
问题内容

我在Python网络环境中工作,我可以使用boto的key.set_contents_from_filename(path / to /
file)将文件从文件系统上传到S3。但是,我想上传已经在网络上的图像(例如https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large)。

我是否应该以某种方式将映像下载到文件系统,然后照常使用boto将其上传到S3,然后删除映像?

理想的情况是,如果有一种方法可以获取boto的key.set_contents_from_file或其他可以接受URL并将其很好地流式传输到S3的命令,而不必显式地将文件副本下载到我的服务器。

def upload(url):
    try:
        conn = boto.connect_s3(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
        bucket_name = settings.AWS_STORAGE_BUCKET_NAME
        bucket = conn.get_bucket(bucket_name)
        k = Key(bucket)
        k.key = "test"
        k.set_contents_from_file(url)
        k.make_public()
                return "Success?"
    except Exception, e:
            return e

如上所述,使用set_contents_from_file时,出现“字符串对象没有属性’tell’”错误。将set_contents_from_filename与url一起使用时,出现No
such file or directory
error。该博托存储文档的叶子掉在上传本地文件和未提及远程存储的文件上传。


问题答案:

不幸的是,实际上没有任何方法可以做到这一点。至少目前还没有。我们可以在boto中添加一个方法,例如set_contents_from_url,但是该方法仍然必须将文件下载到本地计算机,然后再上传。它可能仍然是一种方便的方法,但不会为您节省任何费用。

为了执行您真正想做的事情,我们需要在S3服务本身上具有一些功能,这将使我们能够将URL传递给我们并将其存储到存储桶中。这听起来像是一个非常有用的功能。您可能希望将其发布到S3论坛。



 类似资料:
  • 问题内容: 这是我的工作脚本,它生成图,将其本地保存到磁盘,上载到S3并删除文件: 我想要的是跳过磁盘写入操作,直接从内存中上传绘图。 任何建议如何实现这一目标? 问题答案: 放在一起: 感谢@ padraic-cunningham和@ guyb7的提示!

  • 有没有通过HTTP将图像上传到Google App Engine(Python)的例子?此外,是否可以从Blob存储中检索图像并将图像链接共享给其他人?

  • 问题内容: 我正在尝试使用将图片上传到亚马逊s3 ,但出现此错误: TypeError:预期opts.s3为对象node_modules / multer-s3 / index.js:69:20 这是我的服务器代码: 为什么我收到此错误? 问题答案: 完成 并正常工作的Node Cheat | 使用multer-s3上传到s3 。 码: 对于完整的回购 : 克隆node-cheat express

  • 问题内容: 我正在上传base64字符串,但GraphQL挂起了。如果我将字符串切成少于50,000个字符,它将起作用。50,000个字符后,graphQL永远不会进入解析函数,但不会给出错误。在较小的字符串上,它可以正常工作。 问题答案: 此处的正确方法是使用AWS AppSync通过复杂类型执行实际的S3上传- 您在此处说明的内容看起来更像是您尝试将base64编码的图像作为字符串保存到字段中

  • 问题内容: 我知道如何以这种方式下载文件: 但是,当我尝试上传:时,该网址无效。有人告诉我: 我无法在主页上找到有关如何使用该函数的示例代码。这里有人知道如何使用它进行上传吗?如何设置上传文件路径的参数? 问题答案: 我花了一些时间对此进行试验,这就是我所发现的。 然后,我可以使用curl将文件放置到该URL上,如下所示: 这导致文件被上传到存储桶。因此,似乎有可能。您可能想看看是否可以计算con

  • 我希望能够从开发和生产的前端直接将图像上传到ReactJS公共文件夹。对于生产,我使用带有nodejs后端的heroku应用程序。 从我在网上找到的所有使用ReactJS上传图像的教程中,他们都使用服务器端将图像上传到云,但我想知道是否有可能像Lavarel那样将图像上传到公共文件夹,这样做是否有任何缺点?