Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python boto.s3:key对象上的copy()丢失';内容类型';元数据_Python_Amazon S3_Content Type_Boto - Fatal编程技术网

Python boto.s3:key对象上的copy()丢失';内容类型';元数据

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

下面是复制S3密钥的一些示例代码。您可能希望这样做的原因很多,其中之一就是更新密钥元数据。虽然这似乎是被广泛接受的解决方案,但有一个大问题。问题是,当我执行下面的示例时,我实际上丢失了我的内容类型,默认返回到“应用程序/八位字节流”(如果尝试提供web图像,则不太有用)

有什么想法吗?谢谢。

以下几点对我很有用:

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