【问题标题】:Image error, not loading for S3 image retrieval图像错误,未加载 S3 图像检索
【发布时间】:2020-07-24 16:15:26
【问题描述】:

我已经在我的后端(托管在 Elastic Beanstalk 上)编写了代码,以从 S3 存储桶中检索文件并将其以不同的名称保存回存储桶。我正在使用 boto3 并创建了一个名为“s3”的 s3 客户端。

bucketname是bucket的名字,keyname是key的名字。我也在使用tempfile 模块

tmp = tempfile.NamedTemporaryFile()
with open(tmp.name, 'wb') as f:
    s3.download_fileobj(bucketname, keyname, f)    
s3.upload_file(tmp, bucketname, 'fake.jpg')

我想知道我的理解是否错误(仍在调试为什么会出现错误) - 我创建了一个 tempfile 并在其中打开并保存了带有 keynamebucketname 的对象的内容。然后我以不同的名称将该临时文件上传到存储桶。我的推理正确吗?

【问题讨论】:

    标签: python amazon-web-services amazon-s3 amazon-elastic-beanstalk temporary-files


    【解决方案1】:

    upload_file() 命令在第一个参数中需要一个文件名(作为 string),不是file 对象。

    您应该使用upload_fileobj()

    但是,我会推荐一些不同的东西......

    如果你只是想复制一个对象,你可以使用copy_object:

    response = client.copy_object(
        Bucket='destinationbucket',
        CopySource='/sourcebucket/HappyFace.jpg',
        Key='HappyFaceCopy.jpg',
    )
    

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      相关资源
      最近更新 更多