QCloudUploadPartCopyRequest.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. //
  2. // UploadPartCopy.h
  3. // UploadPartCopy
  4. //
  5. // Created by tencent
  6. // Copyright (c) 2015年 tencent. All rights reserved.
  7. //
  8. // ██████╗ ██████╗██╗ ██████╗ ██╗ ██╗██████╗ ████████╗███████╗██████╗ ███╗ ███╗██╗███╗ ██╗ █████╗ ██╗ ██╗ █████╗ ██████╗
  9. // ██╔═══██╗██╔════╝██║ ██╔═══██╗██║ ██║██╔══██╗ ╚══██╔══╝██╔════╝██╔══██╗████╗ ████║██║████╗ ██║██╔══██╗██║ ██║ ██╔══██╗██╔══██╗
  10. // ██║ ██║██║ ██║ ██║ ██║██║ ██║██║ ██║ ██║ █████╗ ██████╔╝██╔████╔██║██║██╔██╗ ██║███████║██║ ██║ ███████║██████╔╝
  11. // ██║▄▄ ██║██║ ██║ ██║ ██║██║ ██║██║ ██║ ██║ ██╔══╝ ██╔══██╗██║╚██╔╝██║██║██║╚██╗██║██╔══██║██║ ██║ ██╔══██║██╔══██╗
  12. // ╚██████╔╝╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝ ██║ ███████╗██║ ██║██║ ╚═╝ ██║██║██║ ╚████║██║ ██║███████╗ ███████╗██║ ██║██████╔╝
  13. // ╚══▀▀═╝ ╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═════╝
  14. //
  15. //
  16. // _ __ _ _
  17. // (_) / _| | | | |
  18. // ___ ___ _ ____ ___ ___ ___ | |_ ___ _ __ __| | _____ _____| | ___ _ __ ___ _ __ ___
  19. // / __|/ _ \ '__\ \ / / |/ __/ _ \ | _/ _ \| '__| / _` |/ _ \ \ / / _ \ |/ _ \| '_ \ / _ \ '__/ __|
  20. // \__ \ __/ | \ V /| | (_| __/ | || (_) | | | (_| | __/\ V / __/ | (_) | |_) | __/ | \__
  21. // |___/\___|_| \_/ |_|\___\___| |_| \___/|_| \__,_|\___| \_/ \___|_|\___/| .__/ \___|_| |___/
  22. // ______ ______ ______ ______ ______ ______ ______ ______ | |
  23. // |______|______|______|______|______|______|______|______| |_|
  24. //
  25. #import <Foundation/Foundation.h>
  26. #import <QCloudCore/QCloudCore.h>
  27. #import "QCloudCopyObjectResult.h"
  28. NS_ASSUME_NONNULL_BEGIN
  29. /**
  30. 获取所属账户的所有存储空间列表的方法.
  31. 通过使用帯 Authorization 签名认证的请求,可以获取签名中 APPID 所属账户的所有存储空间列表 (Bucket list).
  32. 关于获取所有存储空间列表接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8291.
  33. cos iOS SDK 中获取所属账户的所有存储空间列表的方法具体步骤如下:
  34. 1. 实例化 QCloudGetServiceRequest。
  35. 2. 调用 QCloudCOSXMLService 对象中的 GetService 方法发出请求。
  36. 3. 从回调的 finishBlock 中的 QCloudListAllMyBucketsResult 获取具体内容
  37. 示例:
  38. @code
  39. QCloudGetServiceRequest* request = [[QCloudGetServiceRequest alloc] init];
  40. [request setFinishBlock:^(QCloudListAllMyBucketsResult* result, NSError* error) {
  41. //additional actions after finishing
  42. }];
  43. [[QCloudCOSXMLService defaultCOSXML] GetService:request];
  44. @endcode
  45. request GetService (UP.url CW.get DOWN.xml custom_build){
  46. response QCloudListAllMyBucketsResult
  47. }
  48. /**
  49. 分块复制的方法.
  50. COS 中复制对象可以完成如下功能:
  51. 创建一个新的对象副本.
  52. 复制对象并更名,删除原始对象,实现重命名
  53. 修改对象的存储类型,在复制时选择相同的源和目标对象键,修改存储类型.
  54. 在不同的腾讯云 COS 地域复制对象.
  55. 修改对象的元数据,在复制时选择相同的源和目标对象键,并修改其中的元数据,复制对象时,默认将继承原对象的元数据,但创建日期将会按新对象的时间计算.
  56. 当复制的对象小于等于 5 GB ,可以使用简单复制(https://cloud.tencent.com/document/product/436/14117).
  57. 当复制对象超过 5 GB 时,必须使用分块复制(https://cloud.tencent.com/document/product/436/14118 ) 来实现复制.
  58. 关于分块复制接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8287.
  59. cos iOS SDK 中分块复制的方法具体步骤如下:
  60. 1. 实例化 QCloudUploadPartCopyRequest,填入需要的参数。
  61. 2. 调用 QCloudCOSXMLService 对象中的 UploadPartCopy 方法发出请求。
  62. 3. 从回调的 finishBlock 中的 QCloudCopyObjectResult 获取具体内容。
  63. 示例:
  64. @code
  65. QCloudUploadPartCopyRequest* request = [[QCloudUploadPartCopyRequest alloc] init];
  66. request.bucket = @"bucketName";
  67. request.object = @"objectName";
  68. request.source = @"objectCopySource"; // 源文件 URL 路径,可以通过 versionid 子资源指定历史版本
  69. request.uploadID = @"uploadID"; // 在初始化分块上传的响应中,会返回一个唯一的描述符(upload ID)
  70. request.partNumber = 1; // 标志当前分块的序号
  71. [request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {
  72. }];
  73. [[QCloudCOSXMLService defaultCOSXML]UploadPartCopy:request];
  74. @endcode
  75. */
  76. @interface QCloudUploadPartCopyRequest : QCloudBizHTTPRequest
  77. /**
  78. 存储桶名称
  79. */
  80. @property (strong, nonatomic) NSString *bucket;
  81. /**
  82. 对象名
  83. */
  84. @property (strong, nonatomic) NSString *object;
  85. /**
  86. 在初始化分块上传的响应中,会返回一个唯一的描述符(upload ID)
  87. */
  88. @property (strong, nonatomic) NSString *uploadID;
  89. /**
  90. 标志当前分块的序号
  91. */
  92. @property (assign, nonatomic) int64_t partNumber;
  93. /**
  94. 源文件 URL 路径,可以通过 versionid 子资源指定历史版本
  95. */
  96. @property (strong, nonatomic) NSString *source;
  97. /**
  98. 源文件的字节范围,范围值必须使用 bytes=first-last 格式,first 和 last 都是基于 0 开始的偏移量。
  99. 例如 bytes=0-9 表示你希望拷贝源文件的开头10个字节的数据,如果不指定,则表示拷贝整个文件。
  100. */
  101. @property (strong, nonatomic) NSString *sourceRange;
  102. /**
  103. 当 Object 在指定时间后被修改,则执行操作,否则返回 412。
  104. 可与 x-cos-copy-source-If-None-Match 一起使用,与其他条件联合使用返回冲突。
  105. */
  106. @property (strong, nonatomic) NSString *sourceIfModifiedSince;
  107. /**
  108. 当 Object 在指定时间后未被修改,则执行操作,否则返回 412。
  109. 可与 x-cos-copy-source-If-Match 一起使用,与其他条件联合使用返回冲突。
  110. */
  111. @property (strong, nonatomic) NSString *sourceIfUnmodifiedSince;
  112. /**
  113. 当 Object 的 Etag 和给定一致时,则执行操作,否则返回 412。
  114. 可与x-cos-copy-source-If-Unmodified-Since 一起使用,与其他条件联合使用返回冲突。
  115. */
  116. @property (strong, nonatomic) NSString *sourceIfMatch;
  117. /**
  118. 当 Object 的 Etag 和给定不一致时,则执行操作,否则返回 412。
  119. 可与 x-cos-copy-source-If-Modified-Since 一起使用,与其他条件联合使用返回冲突。
  120. */
  121. @property (strong, nonatomic) NSString *sourceIfNoneMatch;
  122. /**
  123. 指定源文件的版本号
  124. */
  125. @property (strong, nonatomic) NSString *versionID;
  126. /*
  127. 在进行HTTP请求的时候,可以通过设置该参数来设置自定义的一些头部信息。
  128. 通常情况下,携带特定的额外HTTP头部可以使用某项功能,如果是这类需求,可以通过设置该属性来实现。
  129. */
  130. @property (strong, nonatomic) NSDictionary* customHeaders;
  131. - (void) setFinishBlock:(void (^)(QCloudCopyObjectResult* result, NSError * error))QCloudRequestFinishBlock;
  132. @end
  133. NS_ASSUME_NONNULL_END