搜索本产品文档关键词
拷贝Object
所有文档
menu

BOS 对象存储

拷贝Object

简单拷贝Object

基本流程

  1. 创建BOSClient 类的实例。
  2. 执行BOSClient.copyObject( )方法。
  3. 返回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)。

基本流程

  1. 创建CopyObjectRequest类的实例,传入<SrcBucketName>, <SrcKey>, <DestBucketName>, <DestKey>参数。
  2. 创建ObjectMetadata类的实例。
  3. 返回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 参数的设定。

上一篇
删除Object
下一篇
Object的分块上传