版本控制配置

最近更新时间:2019-07-30 19:51:38

使用场景

利用版本控制功能,您可以在存储桶中存放对象的多个版本,并且实现检索、删除和还原指定版本对象。
了解版本控制详情信息,请参见 版本控制概述 文档。

注意:

只有主账号和被授权的子账号可以配置存储桶的版本控制状态。

使用方法

使用 REST API

您可以直接使用 REST API 配置存储桶的版本控制和管理版本控制状态下存储桶中的对象,请参见以下 API 文档部分:

使用 Android SDK

对象存储 COS 的 Android SDK 中提供了此方法,请参见 Android SDK 存储桶管理 文档。

设置版本控制

步骤说明:

  1. 通过调用 PutBucketVersioningRequest 构造方法,实例化 PutBucketVersioningRequest 对象。
  2. 通过调用 CosXmlService 的 putBucketVersioning(PutBucketVersioningRequest) 同步方法,传入 PutBucketVersioningRequest,返回 PutBucketVersioningResult 对象(或者调用 putBucketVersionAsync 方法,传入 PutBucketVersioningRequest 和 CosXmlResultListener 进行异步回调操作)。

代码示例:

String bucket = "bucket";
PutBucketVersioningRequest request = new PutBucketVersioningRequest(bucket);
request.setEnableVersion(true);//开启
request.setSign(signDuration,null,null); //签名
try {
PutBucketVersioningResult result = cosXmlService.putBucketVersioning(request);
Log.w("TEST","success");
} catch (CosXmlClientException e) {
Log.w("TEST","CosXmlClientException =" + e.toString());
} catch (CosXmlServiceException e) {
Log.w("TEST","CosXmlServiceException =" + e.toString());
}
//**使用异步回调请求**
/**

cosXmlService.putBucketVersionAsync(request, new CosXmlResultListener() {
@Override
public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult cosXmlResult) {
Log.w("TEST","success");
}
@Override
public void onFail(CosXmlRequest cosXmlRequest, CosXmlClientException clientException, CosXmlServiceException 
serviceException)  {
String errorMsg = clientException != null ? clientException.toString() : serviceException.toString();
Log.w("TEST",errorMsg);
}
});
*/

检索版本控制

步骤说明:

  1. 通过调用 GetBucketVersioningRequest 构造方法,实例化 GetBucketVersioningRequest 对象。
  2. 通过调用 CosXmlService 的 getBucketVersioning(GetBucketVersioningRequest) 同步方法,传入 GetBucketVersioningRequest,返回 GetBucketVersioningResult 对象(或者调用 getBucketVersioningAsync 方法,传入 GetBucketVersioningRequest 和 CosXmlResultListener 进行异步回调操作)。

代码示例:

String bucket = "bucket";
GetBucketVersioningRequest request = new GetBucketVersioningRequest(bucket);
request.setSign(signDuration,null,null); //签名
try {
GetBucketVersioningResult result = cosXmlService.getBucketVersioning(request);
Log.w("TEST","success");
} catch (CosXmlClientException e) {
Log.w("TEST","CosXmlClientException =" + e.toString());
} catch (CosXmlServiceException e) {
Log.w("TEST","CosXmlServiceException =" + e.toString());
}
//**使用异步回调请求**
/**
cosXmlService.getBucketVersioningAsync(request, new CosXmlResultListener() {
@Override
public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult cosXmlResult) {
Log.w("TEST","success");
}
@Override
public void onFail(CosXmlRequest cosXmlRequest, CosXmlClientException clientException, CosXmlServiceException 
serviceException)  {
String errorMsg = clientException != null ? clientException.toString() : serviceException.toString();
Log.w("TEST",errorMsg);
}
});
*/

使用 iOS SDK

对象存储 COS 的 iOS SDK 中提供了此方法,请参见 iOS SDK 存储桶管理 文档。

设置版本控制

步骤说明:

  1. 生成一个 QCloudPutBucketVersioningRequest 实例,并且填上对应的配置, 选择挂起或者开启版本控制。具体设置方式可以参考下面的代码示例。
  2. 调用 QCloudCOSXMLService 的 PutBucketVersioning 方法发出请求。

代码示例:

QCloudPutBucketVersioningRequest* request = [[QCloudPutBucketVersioningRequest alloc] init];
 request.bucket = @"testBucket-123456789";
 QCloudBucketVersioningConfiguration* configuration = [[QCloudBucketVersioningConfiguration alloc] init];
 request.configuration = configuration;
 configuration.status = QCloudCOSBucketVersioningStatusEnabled;
 [request setFinishBlock:^(id outputObject, NSError* error) {
   //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucketVersioning:request];

检索版本控制

步骤说明:

  1. 生成一个 QCloudGetBucketVersioningRequest 实例,并且设置其 Bucket 属性。
  2. 调用 QCloudCOSXMLService 的 GetBucketVersioning 方法发出请求。

代码示例:

QCloudGetBucketVersioningRequest* request = [[QCloudGetBucketVersioningRequest alloc] init];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(QCloudBucketVersioningConfiguration* result, NSError* error) {
 //设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketVersioning:request];

上传对象

步骤说明:

  1. 在设置版本控制开启后,上传后的对象会自动生成一个 VersionID。
  2. 上传成功后,QCloudUploadObjectResult 中进行返回 VersionID。

代码示例:

QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];

   NSURL* url = /*文件的URL*/;
   put.object = @"文件名.jpg";
   put.bucket = @"test-123456789";
   put.body =  url;
   [put setSendProcessBlock:^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
       NSLog(@"upload %lld totalSend %lld aim %lld", bytesSent, totalBytesSent, totalBytesExpectedToSend);
   }];
   [put setFinishBlock:^(QCloudUploadObjectResult* result, NSError* error) {
   if ( nil == error) {
        NSString *versionID = result.versionID;//这里获取versionID
      }
   }];
   [[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];

下载对象

步骤说明:

  1. 生成一个 QCloudGetObjectRequset 实例,并且设置好其相对应的 Bucket, object 等属性。
  2. 调用 QCloudCOSXMLService 的 GetBucketVersioning 方法发出请求。

代码示例:

QCloudGetObjectRequest* request = [QCloudGetObjectRequest new];
//设置下载的路径 URL,如果设置了,文件将会被下载到指定路径中.如果该参数没有设置,那么文件将会被下载至内存里,存放在 finishBlock 的 outputObject 里。
request.downloadingURL = [NSURL URLWithString:QCloudTempFilePathWithExtension(@"downding")];
request.object = @“您的 Object-Key”;
request.bucket = @"testBucket-123456789";
request.versionID = @"12345678910";
[request setFinishBlock:^(id outputObject, NSError *error) {
  //additional actions after finishing
}];
  [request setDownProcessBlock:^(int64_t bytesDownload, int64_t totalBytesDownload, int64_t totalBytesExpectedToDownload) {
   //下载过程中的进度
  }];
  [[QCloudCOSXMLService defaultCOSXML] GetObject:request];

删除对象

步骤说明:

  1. 生成一个 QCloudDeleteObjectRequest 实例,并且设置好对应的 Bucket,object 等属性。
  2. 设置其相对应的 versionID,或者 deleteMarker。
  3. 调用 QCloudCOSXMLService 的 DeleteObject 方法发出请求。

代码示例:

QCloudDeleteObjectRequest* deleteObjectRequest = [QCloudDeleteObjectRequest new];
deleteObjectRequest.bucket = <#object#>;
deleteObjectRequest.object = <#bucket#>;
deleteObjectRequest.versionId = @"versionID"
[deleteObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
 if (nil == error) {
    <#success call back#>
} else {
<#fail call back#>
}
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteObject:deleteObjectRequest];