最近更新时间:2023-01-11 10:41:08
public void copyObject(){
// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint);
// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId, accessKeySecret, config);
// 创建copy请求,将sourceBucket这个存储空间下的sourceKey这个object复制到destinationBucket这个存储空间下,并命名为destinationObject
CopyObjectRequest request = new CopyObjectRequest("destinationBucket","destinationObject","sourceBucket","sourceKey");
// 可以指定目的文件的加密方式
// copy 后的文件以服务端加密方式存储
// ObjectMetadata meta = new ObjectMetadata();
// meta.setSseAlgorithm("AES256");
// request.setNewObjectMetadata(meta);
// copy的文件以用户提供key的方式进行服务端解密,并设置新的文件的服务端加密
// 生成一个密钥,这个密钥需要自己保存好,加密解密都需要
// KeyGenerator symKeyGenerator = KeyGenerator.getInstance("AES");
// symKeyGenerator.init(256);
// SecretKey destKey= symKeyGenerator.generateKey();
// SecretKey sourceKey= ??//当初加密时用的key
// 指定被拷贝的数据是用sourceKey进行加密的,拷贝时将用该key先对数据解密
// request.setSourceSSECustomerKey(new SSECustomerKey(sourceKey));
// 指定拷贝生成的新数据的加密方式
// request.setDestinationSSECustomerKey(new SSECustomerKey(destKey));
// 发起copy请求
client.copyObject(request);
}
注意:
- 文件复制的时候,需要用户对源文件有读取权限,对目标bucket有写权限。
- 如果目标文件已经存在,复制操作将会抛出400,对应的ErrorCode是 invalidKey。
纯净模式