控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

诚邀爱技术、爱分享的你,成为文档内容共建者> HOT

简介

本文档提供关于复制、移动对象的相关的 API 概览以及 SDK 示例代码。

API 操作名 操作描述
PUT Object - Copy 设置对象复制 复制对象到目标路径

高级接口(推荐)

复制对象

功能说明

该高级接口可支持小于5G的文件调用 copy_object,大于等于5G的文件调用分块上传的 upload_part_copy。

方法原型

copy(Bucket, Key, CopySource, CopyStatus='Copy', PartSize=10, MAXThread=5, **kwargs)

请求示例1:复制对象

# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging

# 正常情况日志级别使用INFO,需要定位时可以修改为DEBUG,此时SDK会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = 'SecretId'     # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
secret_key = 'SecretKey'   # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'      # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
                           # COS支持的所有region列表参见https://cloud.tencent.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
scheme = 'https'           # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

response = client.copy(
    Bucket='examplebucket-1250000000',
    Key='exampleobject',
    CopySource={
        'Bucket': 'sourcebucket-1250000000', 
        'Key': 'sourceobject', 
        'Region': 'ap-guangzhou'
    }
)

请求示例2:移动对象

# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging

# 正常情况日志级别使用INFO,需要定位时可以修改为DEBUG,此时SDK会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = 'SecretId'     # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
secret_key = 'SecretKey'   # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'      # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
                           # COS支持的所有region列表参见https://cloud.tencent.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
scheme = 'https'           # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

bucket = 'examplebucket-1250000000'
srcKey = 'src_object_key'  # 原始的对象路径
destKey = 'dest_object_key'   # 目的对象路径

# COS本身没有移动对象的接口,所谓移动就是先拷贝老对象到新对象,再删除老对象。
response = client.copy(
    Bucket=bucket,
    Key=destKey,
    CopySource={
        'Bucket':bucket,
        'Key':srcKey,
        'Region':'ap-guangzhou',
    })
client.delete_object(Bucket=bucket, Key=srcKey)

全部参数请求示例

response = client.copy(
    Bucket='examplebucket-1250000000',
    Key='exampleobject',
    CopySource={
        'Bucket': 'sourcebucket-1250000000', 
        'Key': 'exampleobject', 
        'Region': 'ap-guangzhou'
    }
    CopyStatus='Copy'|'Replaced',
    PartSize=20,
    MAXThread=10
)

参数说明

参数名称 参数描述 类型 是否必填
Bucket 存储桶名称,由 BucketName-APPID 构成 String
Key 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg中,对象键为 doc/pic.jpg String
CopySource 描述拷贝源对象的路径,包含 Bucket、Key、Region、VersionId Dict
CopyStatus 拷贝状态,可选值 Copy、Replaced String 否 |
PartSize 分块下载的分块大小,默认为10MB Int
MAXThread 分块下载的并发数量,默认为5个线程下载分块 Int

返回结果说明

若小于5G的文件,则为 copy_object 的返回结果,否则为 complete_multipart_upload 的返回结果,类型为 dict。

简单操作

复制对象

功能说明

复制文件到目标路径(PUT Object - Copy)。

方法原型

copy_object(Bucket, Key, CopySource, CopyStatus='Copy', **kwargs)

请求示例1:复制对象

源和目标是不同的对象,会生成一个新的目标对象,目标对象会复制源对象的元数据信息。

# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging

# 正常情况日志级别使用INFO,需要定位时可以修改为DEBUG,此时SDK会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = 'SecretId'     # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
secret_key = 'SecretKey'   # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'      # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
                           # COS支持的所有region列表参见https://cloud.tencent.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
scheme = 'https'           # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

response = client.copy_object(
    Bucket='examplebucket-1250000000',
    Key='exampleobject',
    CopySource={
        'Bucket': 'sourcebucket-1250000000', 
        'Key': 'sourceobject', 
        'Region': 'ap-guangzhou'
    }
)

请求示例2:移动对象

COS本身没有移动对象的接口,所谓移动就是先拷贝老对象到新对象,再删除老对象。

# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging

# 正常情况日志级别使用INFO,需要定位时可以修改为DEBUG,此时SDK会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = 'SecretId'     # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
secret_key = 'SecretKey'   # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
region = 'ap-beijing'      # 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
                           # COS支持的所有region列表参见https://cloud.tencent.com/document/product/436/6224
token = None               # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
scheme = 'https'           # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
client = CosS3Client(config)

response = client.copy_object(
    Bucket='examplebucket-1250000000',
    Key='exampleobject',
    CopySource={
        'Bucket': 'sourcebucket-1250000000', 
        'Key': 'sourceobject', 
        'Region': 'ap-guangzhou'
    }
)
client.delete_object(Bucket='sourcebucket-1250000000', Key='sourceobject')

参数说明

参数名称 参数描述 类型 是否必填
Bucket 存储桶名称,由 BucketName-APPID 构成 String
Key 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg String
CopySource 描述拷贝源对象的路径,包含 Bucket、Key、Region、VersionId Dict
CopyStatus 可选值为 Copy、Replaced,设置为 Copy 时,忽略设置的用户元数据信息直接复制,设置为 Replaced 时,按设置的元信息修改元数据,当目标路径和源路径一样时,必须设置为 Replaced String
ACL 设置对象的 ACL,如 private,public-read String
GrantFullControl 赋予指定账户对对象的所有权限,格式为 id="OwnerUin" String
GrantRead 赋予指定账户对对象的读权限,格式为 id="OwnerUin" String
StorageClass 设置对象的存储类型,STANDARD,STANDARD_IA,默认值 STANDARD String
Expires 设置 Expires String
CacheControl 缓存策略,设置 Cache-Control String
ContentType 内容类型,设置 Content-Type String
ContentDisposition 文件名称,设置 Content-Disposition String
ContentEncoding 编码格式,设置 Content-Encoding String
ContentLanguage 语言类型,设置 Content-Language String
Metadata 用户自定义的对象元数据 Dict

返回结果说明

上传对象的属性,类型为 dict:

{
    'ETag': 'string',
    'LastModified': 'string',
    'VersionId': 'string',
    'x-cos-copy-source-version-id': 'string'
}

参数名称 参数描述 类型
ETag 拷贝对象的 MD5 值 String
LastModified 拷贝对象的最后一次修改时间 String
VersionId 开启版本控制后,目的对象的版本号 String
x-cos-copy-source-version-id 源对象的版本号 String
目录