API | 操作名 | 操作描述 |
设置对象复制(修改对象属性) | 复制文件到目标路径 | |
删除单个对象 | 在存储桶中删除指定对象 |
API | 操作名 | 操作描述 |
查询分块上传/复制 | 查询正在进行中的分块上传/复制信息 | |
初始化分块上传/复制 | 初始化分块上传/复制操作 | |
复制分块 | 将其他对象复制为一个分块 | |
查询已上传/复制块 | 查询特定分块操作中的已上传/复制的块 | |
完成分块上传/复制 | 完成整个文件的分块上传/复制 | |
终止分块上传/复制 | 终止一个分块操作并删除已上传/复制的块 |
QCloudCOSXMLCopyObjectRequest* request = [[QCloudCOSXMLCopyObjectRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 文件来源存储桶,需要是公有读或者在当前账号有权限request.sourceBucket = @"sourcebucket-1250000000";// 源文件名称request.sourceObject = @"sourceObject";// 源文件的 APPIDrequest.sourceAPPID = @"1250000000";// 来源的地域request.sourceRegion= @"COS_REGION";[request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {// 可以从 outputObject 中获取 response 中 etag 或者自定义头部等信息}];// 注意如果是跨地域复制,这里使用的 transferManager 所在的 region 必须为目标桶所在的 region[[QCloudCOSTransferMangerService defaultCOSTransferManager] CopyObject:request];// 取消copy// 若需要取消copy 调用cancel方法[request cancel];
let copyRequest = QCloudCOSXMLCopyObjectRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcopyRequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"copyRequest.object = "exampleobject";// 文件来源存储桶,需要是公有读或者在当前账号有权限// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcopyRequest.sourceBucket = "sourcebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"copyRequest.sourceObject = "sourceObject";// 源文件的 APPIDcopyRequest.sourceAPPID = "1250000000";// 来源的地域copyRequest.sourceRegion = "COS_REGION";copyRequest.setFinish { (copyResult, error) inif let copyResult = copyResult {// 文件的 etaglet eTag = copyResult.eTag} else {print(error!);}}// 注意如果是跨地域复制,这里使用的 transferManager 所在的 region 必须为目标桶所在的 regionQCloudCOSTransferMangerService.defaultCOSTransferManager().copyObject(copyRequest);// 取消copy// 若需要取消copy 调用cancel方法copyRequest.cancel();
QCloudCOSXMLCopyObjectRequest* request = [[QCloudCOSXMLCopyObjectRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"request.object = @"exampleobject";// 文件来源存储桶,需要是公有读或者在当前账号有权限request.sourceBucket = @"sourcebucket-1250000000";// 源文件名称request.sourceObject = @"sourceObject";// 源文件的 APPIDrequest.sourceAPPID = @"1250000000";// 来源的地域request.sourceRegion= @"COS_REGION";[request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {// 可以从 outputObject 中获取 response 中 etag 或者自定义头部等信息if(!error){QCloudDeleteObjectRequest* deleteObjectRequest = [QCloudDeleteObjectRequest new];// 文件来源存储桶,需要是公有读或者在当前账号有权限deleteObjectRequest.bucket = @"sourcebucket-1250000000";// 源文件名称,是源对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"deleteObjectRequest.object = @"sourceObject";[deleteObjectRequest setFinishBlock:^(id outputObject, NSError *error) {// outputObject 包含所有的响应 http 头部NSDictionary* info = (NSDictionary *) outputObject;}];[[QCloudCOSXMLService defaultCOSXML] DeleteObject:deleteObjectRequest];}}];// 注意如果是跨地域移动,这里使用的 transferManager 所在的 region 必须为目标桶所在的 region[[QCloudCOSTransferMangerService defaultCOSTransferManager] CopyObject:request];
let copyRequest = QCloudCOSXMLCopyObjectRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcopyRequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"copyRequest.object = "exampleobject";// 文件来源存储桶,需要是公有读或者在当前账号有权限// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcopyRequest.sourceBucket = "sourcebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"copyRequest.sourceObject = "sourceObject";// 源文件的 APPIDcopyRequest.sourceAPPID = "1250000000";// 来源的地域copyRequest.sourceRegion = "COS_REGION";copyRequest.setFinish { (copyResult, error) inif let copyResult = copyResult {// 文件的 etaglet deleteObject = QCloudDeleteObjectRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketdeleteObject.bucket = "sourcebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"deleteObject.object = "sourceObject";deleteObject.finishBlock = {(result,error)inif let result = result {// result 包含响应的 header 信息} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().deleteObject(deleteObject);} else {print(error!);}}// 注意如果是跨地域移动,这里使用的 transferManager 所在的 region 必须为目标桶所在的 regionQCloudCOSTransferMangerService.defaultCOSTransferManager().copyObject(copyRequest);
QCloudPutObjectCopyRequest* request = [[QCloudPutObjectCopyRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replacedrequest.metadataDirective = @"Copy";// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。request.accessControlList = @"default";// 源对象所在的路径request.objectCopySource =@"sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 指定源文件的 versionID,只有开启或开启后暂停的存储桶,才会响应此参数request.versionID = @"objectVersion1";[request setFinishBlock:^(QCloudCopyObjectResult * _Nonnull result,NSError * _Nonnull error) {// result 返回具体信息}];[[QCloudCOSXMLService defaultCOSXML] PutObjectCopy:request];
let putObjectCopy = QCloudPutObjectCopyRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketputObjectCopy.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"putObjectCopy.object = "exampleobject";// 源对象所在的路径putObjectCopy.objectCopySource = "sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 ReplacedputObjectCopy.metadataDirective = "Copy";// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。putObjectCopy.accessControlList = "default";// 指定源文件的 versionID,只有开启或开启后暂停的存储桶,才会响应此参数putObjectCopy.versionID = "versionID";putObjectCopy.setFinish { (result, error) inif let result = result {let eTag = result.eTag} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().putObjectCopy(putObjectCopy);
QCloudPutObjectCopyRequest* request = [[QCloudPutObjectCopyRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replacedrequest.metadataDirective = @"Replaced";// 修改元数据[request.customHeaders setValue:@"newValue" forKey:@"x-cos-meta-*"];// 对象存储类型,枚举值请参见 存储类型概述 文档,// STANDARD_IA,ARCHIVE。仅当对象不是标准存储(STANDARD)时才会返回该头部// 修改存储类型[request.customHeaders setValue:@"newValue" forKey:@"x-cos-storage-class"];// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。// 修改aclrequest.accessControlList = @"private";// 源对象所在的路径request.objectCopySource =@"sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 指定源文件的 versionID,只有开启或开启后暂停的存储桶,才会响应此参数request.versionID = @"objectVersion1";[request setFinishBlock:^(QCloudCopyObjectResult * _Nonnull result,NSError * _Nonnull error) {// result 返回具体信息}];[[QCloudCOSXMLService defaultCOSXML] PutObjectCopy:request];
let request : QCloudPutObjectCopyRequest = QCloudPutObjectCopyRequest();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = "exampleobject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replacedrequest.metadataDirective = "Replaced";// 修改元数据request.customHeaders.setValue("newValue", forKey: "x-cos-meta-*");// 对象存储类型,枚举值请参见 存储类型概述 文档,// STANDARD_IA,ARCHIVE。仅当对象不是标准存储(STANDARD)时才会返回该头部// 修改存储类型request.customHeaders.setValue("newValue", forKey: "x-cos-storage-class");// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。// 修改aclrequest.accessControlList = "源文件acl";// 源对象所在的路径request.objectCopySource = "sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 指定源文件的 versionID,只有开启或开启后暂停的存储桶,才会响应此参数request.versionID = "versionID";request.setFinish { (result, error) inif let result = result {let eTag = result.eTag} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().putObjectCopy(request);
QCloudPutObjectCopyRequest* request = [[QCloudPutObjectCopyRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replacedrequest.metadataDirective = @"Replaced";// 自定义对象header[request.customHeaders setValue:@"newValue" forKey:@"x-cos-meta-*"];// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。request.accessControlList = @"default";// 源对象所在的路径request.objectCopySource =@"examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject";[request setFinishBlock:^(QCloudCopyObjectResult * _Nonnull result,NSError * _Nonnull error) {// result 返回具体信息}];[[QCloudCOSXMLService defaultCOSXML] PutObjectCopy:request];
let request : QCloudPutObjectCopyRequest = QCloudPutObjectCopyRequest();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = "exampleobject";// 是否拷贝元数据,枚举值:Copy,Replaced,默认值 Copy。// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制// 假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致// 即用户试图修改元数据时,必须为 Replacedrequest.metadataDirective = "Replaced";// 自定义对象headerrequest.customHeaders.setValue("newValue", forKey: "x-cos-meta-*")// 定义 Object 的 ACL 属性,有效值:private,public-read,default。// 默认值:default(继承 Bucket 权限)。// 注意:如果您无需进行 Object ACL 控制,请填 default// 或者此项不进行设置,默认继承 Bucket 权限。request.accessControlList = "default";// 源对象所在的路径request.objectCopySource ="examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject";request.setFinish { (result, error) inif let result = result {// 生成的新文件的 etaglet eTag = result.eTag} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().putObjectCopy(request);
QCloudPutObjectCopyRequest* request = [[QCloudPutObjectCopyRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 对象存储类型,枚举值请参见 存储类型概述 文档,// STANDARD_IA,ARCHIVE。仅当对象不是标准存储(STANDARD)时才会返回该头部[request.customHeaders setValue:@"ARCHIVE" forKey:@"x-cos-storage-class"];// 源对象所在的路径request.objectCopySource =@"examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject";// 指定源文件的 versionID,只有开启或开启后暂停的存储桶,才会响应此参数request.versionID = @"";[request setFinishBlock:^(QCloudCopyObjectResult * _Nonnull result,NSError * _Nonnull error) {// result 返回具体信息}];[[QCloudCOSXMLService defaultCOSXML] PutObjectCopy:request];
let request : QCloudPutObjectCopyRequest = QCloudPutObjectCopyRequest();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = "exampleobject";// 对象存储类型,枚举值请参见 存储类型概述 文档,// STANDARD_IA,ARCHIVE。仅当对象不是标准存储(STANDARD)时才会返回该头部request.customHeaders.setValue("newValue", forKey: "x-cos-storage-class");// 源对象所在的路径request.objectCopySource ="examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject";request.setFinish { (result, error) inif let result = result {// 生成的新文件的 etaglet eTag = result.eTag} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().putObjectCopy(request);
QCloudListBucketMultipartUploadsRequest* uploads = [QCloudListBucketMultipartUploadsRequest new];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketuploads.bucket = @"examplebucket-1250000000";// 设置最大返回的 multipart 数量,合法取值从 1 到 1000uploads.maxUploads = 100;[uploads setFinishBlock:^(QCloudListMultipartUploadsResult* result,NSError *error) {// 可以从 result 中返回分块信息// 进行中的分块复制对象NSArray<QCloudListMultipartUploadContent*> *uploads = result.uploads;}];[[QCloudCOSXMLService defaultCOSXML] ListBucketMultipartUploads:uploads];
let listParts = QCloudListBucketMultipartUploadsRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketlistParts.bucket = "examplebucket-1250000000";// 设置最大返回的 multipart 数量,合法取值从 1 到 1000listParts.maxUploads = 100;listParts.setFinish { (result, error) inif let result = result {// 未完成的所有分块复制任务let uploads = result.uploads;} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().listBucketMultipartUploads(listParts);
QCloudInitiateMultipartUploadRequest* initRequest = [QCloudInitiateMultipartUploadRequest new];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketinitRequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"initRequest.object = @"exampleobject";// 将作为对象的元数据返回initRequest.cacheControl = @"cacheControl";initRequest.contentDisposition = @"contentDisposition";// 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateinitRequest.accessControlList = @"public";// 赋予被授权者读的权限。initRequest.grantRead = @"grantRead";// 赋予被授权者全部权限initRequest.grantFullControl = @"grantFullControl";[initRequest setFinishBlock:^(QCloudInitiateMultipartUploadResult* outputObject,NSError *error) {// 获取分块复制的 uploadId,后续的分块复制都需要这个 ID,请保存以备后续使用self->uploadId = outputObject.uploadId;}];[[QCloudCOSXMLService defaultCOSXML] InitiateMultipartUpload:initRequest];
let initRequest = QCloudInitiateMultipartUploadRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketinitRequest.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"initRequest.object = "exampleobject";initRequest.setFinish { (result, error) inif let result = result {// 获取分块复制的 uploadId,后续的分块复制都需要这个 ID,请保存以备后续使用self.uploadId = result.uploadId;} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().initiateMultipartUpload(initRequest);
QCloudUploadPartCopyRequest* request = [[QCloudUploadPartCopyRequest alloc] init];// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 源文件 URL 路径,可以通过 versionid 子资源指定历史版本request.source = @"sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 在初始化分块复制的响应中,会返回一个唯一的描述符(upload ID)request.uploadID = uploadId;// 标志当前分块的序号request.partNumber = 1;[request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {QCloudMultipartInfo *part = [QCloudMultipartInfo new];// 获取所复制分块的 etagpart.eTag = result.eTag;part.partNumber = @"1";// 保存起来用于最后完成复制时使用self.parts=@[part];}];[[QCloudCOSXMLService defaultCOSXML]UploadPartCopy:request];
let req = QCloudUploadPartCopyRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketreq.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"req.object = "exampleobject";// 源文件 URL 路径,可以通过 versionid 子资源指定历史版本req.source = "sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject";// 在初始化分块复制的响应中,会返回一个唯一的描述符(upload ID)if let uploadId = self.uploadId {req.uploadID = uploadId;}// 标志当前分块的序号req.partNumber = 1;req.setFinish { (result, error) inif let result = result {let mutipartInfo = QCloudMultipartInfo.init();// 获取所复制分块的 etagmutipartInfo.eTag = result.eTag;mutipartInfo.partNumber = "1";// 保存起来用于最后完成复制时使用self.parts = [mutipartInfo];} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().uploadPartCopy(req);
QCloudListMultipartRequest* request = [QCloudListMultipartRequest new];// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"request.object = @"exampleobject";// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketrequest.bucket = @"examplebucket-1250000000";// 在初始化分块复制的响应中,会返回一个唯一的描述符(upload ID)request.uploadId = uploadId;[request setFinishBlock:^(QCloudListPartsResult * _Nonnull result,NSError * _Nonnull error) {// 从 result 中获取已复制分块信息// 用来表示每一个块的信息NSArray<QCloudMultipartUploadPart*> *parts = result.parts;}];[[QCloudCOSXMLService defaultCOSXML] ListMultipart:request];
let req = QCloudListMultipartRequest.init();// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"req.object = "exampleobject";// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketreq.bucket = "examplebucket-1250000000";// 在初始化分块复制的响应中,会返回一个唯一的描述符(upload ID)if let uploadId = self.uploadId {req.uploadId = uploadId;}req.setFinish { (result, error) inif let result = result {// 所有已完成的分片let parts = result.parts} else {print(error!);}}QCloudCOSXMLService.defaultCOSXML().listMultipart(req);
QCloudCompleteMultipartUploadRequest *completeRequst = [QCloudCompleteMultipartUploadRequest new];// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"completeRequst.object = @"exampleobject";// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcompleteRequst.bucket = @"examplebucket-1250000000";// 本次要查询的分块复制的 uploadId,可从初始化分块复制的请求结果 QCloudInitiateMultipartUploadResult 中得到completeRequst.uploadId = uploadId;// 已复制分块的信息QCloudCompleteMultipartUploadInfo *partInfo = [QCloudCompleteMultipartUploadInfo new];NSMutableArray * parts = [self.parts mutableCopy];// 对已复制的块进行排序[parts sortUsingComparator:^NSComparisonResult(QCloudMultipartInfo* _Nonnull obj1,QCloudMultipartInfo* _Nonnull obj2) {int a = obj1.partNumber.intValue;int b = obj2.partNumber.intValue;if (a < b) {return NSOrderedAscending;} else {return NSOrderedDescending;}}];partInfo.parts = [parts copy];completeRequst.parts = partInfo;[completeRequst setFinishBlock:^(QCloudUploadObjectResult * _Nonnull result,NSError * _Nonnull error) {// 从 result 中获取复制结果}];[[QCloudCOSXMLService defaultCOSXML] CompleteMultipartUpload:completeRequst];
let complete = QCloudCompleteMultipartUploadRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketcomplete.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"complete.object = "exampleobject";// 本次要查询的分块复制的 uploadId,可从初始化分块复制的请求结果// QCloudInitiateMultipartUploadResult 中得到complete.uploadId = "exampleUploadId";if let uploadId = self.uploadId {complete.uploadId = uploadId;}// 已复制分块的信息let completeInfo = QCloudCompleteMultipartUploadInfo.init();if self.parts == nil {print("没有要完成的分块");return;}if self.parts != nil {completeInfo.parts = self.parts ?? [];}complete.parts = completeInfo;complete.setFinish { (result, error) in// 从 result 中获取复制结果}QCloudCOSXMLService.defaultCOSXML().completeMultipartUpload(complete);
QCloudAbortMultipfartUploadRequest *abortRequest = [QCloudAbortMultipfartUploadRequest new];// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"abortRequest.object = @"exampleobject";// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketabortRequest.bucket = @"examplebucket-1250000000";// 本次要终止的分块复制的 uploadId// 可从初始化分块复制的请求结果 QCloudInitiateMultipartUploadResult 中得到abortRequest.uploadId = @"exampleUploadId";[abortRequest setFinishBlock:^(id outputObject, NSError *error) {// 可以从 outputObject 中获取 response 中 etag 或者自定义头部等信息NSDictionary * result = (NSDictionary *)outputObject;}];[[QCloudCOSXMLService defaultCOSXML]AbortMultipfartUpload:abortRequest];
let abort = QCloudAbortMultipfartUploadRequest.init();// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucketabort.bucket = "examplebucket-1250000000";// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"abort.object = "exampleobject";// 本次要查询的分块复制的 uploadId,可从初始化分块复制的请求结果// QCloudInitiateMultipartUploadResult 中得到abort.uploadId = self.uploadId!;abort.finishBlock = {(result,error)inif let result = result {// 可以从 result 中获取服务器返回的 header 信息} else {print(error!)}}QCloudCOSXMLService.defaultCOSXML().abortMultipfartUpload(abort);
本页内容是否解决了您的问题?