拷贝Object
更新时间:2022-10-21
简单拷贝Object
基本流程
- 创建BOSClient 类的实例。
- 执行BOSClient.copyObject( )方法。
- 返回CopyObjectResponse类实例,可通过getETag()/getLastModified()获取eTag和最后修改时间。
示例代码
Java
1// 拷贝Object
2CopyObjectResponse copyObjectResponse = client.copyObject(<SrcBucketName>, <SrcKey>, <DestBucketName>, <DestKey>); //SrcBucketName, SrcKey为原地址,DestBucketName, DestKey为拷贝到的目的地址
3
4// 打印结果
5System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
完整示例
Java
1import android.app.Activity;
2import android.os.Bundle;
3import com.baidubce.BceClientException;
4import com.baidubce.BceServiceException;
5import com.baidubce.auth.DefaultBceCredentials;
6import com.baidubce.demo.R;
7import com.baidubce.services.bos.BosClient;
8import com.baidubce.services.bos.BosClientConfiguration;
9import com.baidubce.services.bos.model.CopyObjectResponse;
10
11public class ExampleActivity extends Activity {
12
13private String srcBucketName = <SrcBucketName>;
14private String srcKey = <SrcKey>;
15
16private String destBucketName = <DestBucketName>;
17private String destKey = <DestKey>;
18
19@Override
20protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.activity_main);
23 new Thread(new Runnable() {
24 @Override
25 public void run() {
26 try {
27 BosClientConfiguration config = new BosClientConfiguration();
28 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>));
29 config.setEndpoint(<EndPoint>);
30 BosClient client = new BosClient(config);
31
32 // 拷贝Object
33 CopyObjectResponse copyObjectResponse = client.copyObject(<SrcBucketName>, <SrcKey>, <DestBucketName>, <DestKey>);
34
35 // 打印结果
36 System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
37
38 } catch (BceServiceException e) {
39 System.out.println("Error ErrorCode: " + e.getErrorCode());
40 System.out.println("Error RequestId: " + e.getRequestId());
41 System.out.println("Error StatusCode: " + e.getStatusCode());
42 System.out.println("Error Message: " + e.getMessage());
43 System.out.println("Error ErrorType: " + e.getErrorType());
44 } catch (BceClientException e) {
45 System.out.println("Error Message: " + e.getMessage());
46 }
47 }
48 }).start();
49}}
说明:copyObject 方法返回一个
CopyObjectResponse
对象,该对象中包含了新Object的ETag和修改时间。
通过CopyObjectRequest拷贝Object
您也可以通过 CopyObjectRequest
实现Object的拷贝。该功能一般用于如下场景:
- Copy一个Object但重新设置meta。
- 重置某个现有Object的meta(把Src和Des设置为同一个Object)。
基本流程
- 创建CopyObjectRequest类的实例,传入
<SrcBucketName>
,<SrcKey>
,<DestBucketName>
,<DestKey>
参数。 - 创建ObjectMetadata类的实例。
- 返回CopyObjectResponse类实例,可通过getETag()/getLastModified()获取eTag和最后修改时间。
示例代码
Java
1// 创建CopyObjectRequest对象
2CopyObjectRequest copyObjectRequest = new CopyObjectRequest(<SrcBucketName>, <SrcKey>, <DestBucketName>, <DestKey>);
3
4// 设置新的Metadata
5Map<String, String> userMetadata = new HashMap<String, String>();
6userMetadata.put(<UserMetaKey>,<UserMetaValue>);
7meta.setUserMetadata(userMetadata);
8copyObjectRequest.setNewObjectMetadata(meta);
9
10// 复制Object
11CopyObjectResponse copyObjectResponse = client.copyObject(copyObjectRequest);
12
13System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
说明:
CopyObjectRequest
允许用户修改目的Object的ObjectMeta,同时也提供MatchingETagConstraints
参数的设定。