Python boto.s3:key对象上的copy()丢失';内容类型';元数据
下面是复制S3密钥的一些示例代码。您可能希望这样做的原因很多,其中之一就是更新密钥元数据。虽然这似乎是被广泛接受的解决方案,但有一个大问题。问题是,当我执行下面的示例时,我实际上丢失了我的内容类型,默认返回到“应用程序/八位字节流”(如果尝试提供web图像,则不太有用) 有什么想法吗?谢谢。以下几点对我很有用:Python boto.s3:key对象上的copy()丢失';内容类型';元数据,python,amazon-s3,content-type,boto,Python,Amazon S3,Content Type,Boto,下面是复制S3密钥的一些示例代码。您可能希望这样做的原因很多,其中之一就是更新密钥元数据。虽然这似乎是被广泛接受的解决方案,但有一个大问题。问题是,当我执行下面的示例时,我实际上丢失了我的内容类型,默认返回到“应用程序/八位字节流”(如果尝试提供web图像,则不太有用) 有什么想法吗?谢谢。以下几点对我很有用: import boto s3 = boto.connect_s3() bucket = s3.lookup('mybucket') key = bucket.lookup('mykey
import boto
s3 = boto.connect_s3()
bucket = s3.lookup('mybucket')
key = bucket.lookup('mykey')
# Copy the key onto itself, preserving the ACL but changing the content-type
key.copy(key.bucket, key.name, preserve_acl=True, metadata={'Content-Type': 'text/plain'})
key = bucket.lookup('mykey')
print key.content_type
跑了很长时间 看一看帖子
你需要做一个测试
key = bucket.get_key(key.name)
然后:
否则,
key.content\u type
将返回application/octet stream
copy
仅返回对象的浅拷贝。尝试使用deepcopy
@Joel:boto不提供deepcopy。
key = bucket.get_key(key.name)
metadata['Content-Type'] = key.content_type will work