简单复制

最近更新时间: 2024-06-12 15:06:00

适用场景

您可以在 COS 中将已存储的对象通过简单的复制操作,创建一个新的对象副本。在单个操作中,您可以复制最大 5 GB 的对象;当对象超过 5 GB 时,您必须使用分块上传的接口来实现复制。复制对象有以下功能:

  • 创建一个新的对象副本。

  • 复制对象并更名,删除原始对象,实现重命名。

  • 修改对象的存储类型,在复制时选择相同的源和目标对象键,修改存储类型。

  • 修改对象的元数据,在复制时选择相同的源和目标对象键,并修改其中的元数据。

    复制对象时,默认将继承原对象的元数据,但创建日期将会按新对象的时间计算。

使用方法

使用 REST API

您可以直接使用 REST API 发起一个获取对象请求,可参考 Put Object Copy 文档说明。

使用 Java SDK

对象存储 COS 的 Java SDK 中提供了此方法,可参考 Java SDK 接口文档 Put Object Copy 部分。

步骤说明

  1. 初始化客户端 cosclient。

  2. 使用 copyObject 接口来完成 copy。

代码示例

CopyObjectRequest包含了 copy 对象的请求,通过设置源文件所在的园区,bucket 名称,路径以及目的文件的园区,bucket名称,路径。下列的代码示例演示了如何简单复制对象:

// 1 初始化用户身份信息(secretId, secretKey)  
COSCredentials cred = new BasicCOSCredentials("AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY");
// 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224  
ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1"));
// 3 生成cos客户端  
COSClient cosclient = new COSClient(cred, clientConfig);
// 要拷贝的bucket region, 支持跨园区拷贝  
Region srcBucketRegion = new Region("ap-shanghai");
// 源bucket, bucket名需包含appid  
String srcBucketName = "srcBucket-1251668577";
// 要拷贝的源文件  
String srcKey = "aaa/bbb.txt";
// 目的bucket, bucket名需包含appid  
String destBucketName = "destBucket-1251668577";
// 要拷贝的目的文件  
String destKey = "ccc/ddd.txt";

CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketRegion, srcBucketName,
        srcKey, destBucketName, destKey);
try {
    CopyObjectResult copyObjectResult = cosclient.copyObject(copyObjectRequest);
} catch (CosServiceException e) {
    e.printStackTrace();
} catch (CosClientException e) {
    e.printStackTrace();
}
cosclient.shutdown();