【问题标题】:Boto3: upload file from base64 to S3Boto3:将文件从base64上传到S3
【发布时间】:2018-05-05 09:02:06
【问题描述】:

如何使用 boto3 直接将 base64 编码文件上传到 S3?

object = s3.Object(BUCKET_NAME,email+"/"+save_name)
object.put(Body=base64.b64decode(file))

我尝试像这样上传 base64 编码的文件,但是文件损坏了。不经过base64解码直接上传字符串也不行。

有没有类似于boto2的set_contents_from_string()的东西?

【问题讨论】:

  • 堆栈跟踪是什么!?
  • 这里的对象是什么?

标签: amazon-s3 boto3


【解决方案1】:

我刚刚修复了问题,发现上传的方式是正确的,但是base64字符串不正确,因为它仍然包含前缀data:image/jpeg;base64, - 删除该前缀解决了问题。

【讨论】:

【解决方案2】:

如果你仔细阅读Object.put 上的文档,你会看到这个

response = object.put(
    ACL='private'......,
    Body=b'bytes'|file,
    .....,

正文只接受文件对象或字节,任何其他类型都将失败。 base64.b64decode 不会自动读取文件对象,必须将数据读入解码模块。

# FIX 
object.put(Body=base64.b64decode(file.read()))  

提醒一下,请始终发布堆栈跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2017-06-13
    相关资源
    最近更新 更多