简单复制
最近更新时间: 2024-10-17 17:10:00
适用场景
您可以在 COS 中将已存储的对象通过简单的复制操作,创建一个新的对象副本。在单个操作中,您可以复制最大 5 GB 的对象;当对象超过 5 GB 时,您必须使用分块上传的接口来实现复制。复制对象有以下功能:
创建一个新的对象副本。
复制对象并更名,删除原始对象,实现重命名。
修改对象的存储类型,在复制时选择相同的源和目标对象键,修改存储类型。
修改对象的元数据,在复制时选择相同的源和目标对象键,并修改其中的元数据。
复制对象时,默认将继承原对象的元数据,但创建日期将会按新对象的时间计算。
使用方法
使用 REST API
您可以直接使用 REST API 发起一个获取对象请求,可参考 Put Object Copy 文档说明。
使用 Java SDK
对象存储 COS 的 Java SDK 中提供了此方法,可参考 Java SDK 接口文档 Put Object Copy 部分。
步骤说明
初始化客户端 cosclient。
使用 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();