tencent cloud

文档反馈

复制和移动对象

最后更新时间:2024-01-22 11:43:35

    简介

    本文档提供关于复制、移动对象的相关的 API 概览以及 SDK 示例代码。
    API
    操作名
    操作描述
    设置对象复制
    复制对象到目标路径

    高级接口(推荐)

    复制对象

    功能说明

    该高级接口可支持小于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 os
    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 = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    # COS 支持的所有 region 列表参见 https://www.tencentcloud.com/document/product/436/6224
    token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://www.tencentcloud.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 os
    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 = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    # COS 支持的所有 region 列表参见 https://www.tencentcloud.com/document/product/436/6224
    token = None # 如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://www.tencentcloud.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 os
    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 = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    # COS 支持的所有 region 列表参见 https://www.tencentcloud.com/document/product/436/6224
    token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://www.tencentcloud.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 os
    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 = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/32675
    region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    # COS 支持的所有 region 列表参见 https://www.tencentcloud.com/document/product/436/6224
    token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://www.tencentcloud.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
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持