QCloudCOSXMLUploadObjectRequest.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // QCloudCOSXMLUploadObjectRequest.h
  3. // Pods
  4. //
  5. // Created by Dong Zhao on 2017/5/23.
  6. //
  7. //
  8. #import <QCloudCore/QCloudCore.h>
  9. #import "QCloudCOSStorageClassEnum.h"
  10. FOUNDATION_EXTERN NSString* const QCloudUploadResumeDataKey;
  11. typedef NSData* QCloudCOSXMLUploadObjectResumeData;
  12. @class QCloudUploadObjectResult;
  13. @class QCloudInitiateMultipartUploadResult;
  14. @class QCloudCOSXMLUploadObjectRequest;
  15. typedef void(^InitMultipleUploadFinishBlock)(QCloudInitiateMultipartUploadResult* multipleUploadInitResult, QCloudCOSXMLUploadObjectResumeData resumeData);
  16. /**
  17. COSXML上传对象接口。在上传小于1MB的文件时,通过该request来上传的话,会生成一个简单上传putObjectRequset,将整个对象直接上传。
  18. 如果上传的对象大小大于1MB时,我们会在内部进行分片上传的处理,将文件切分成数个1MB大小的块,然后通过并行分快上传的方式进行上传。
  19. */
  20. @interface QCloudCOSXMLUploadObjectRequest<BodyType> : QCloudAbstractRequest
  21. /**
  22. 上传文件(对象)的文件名,也是对象的key,请注意文件名中不可以含有问号即"?"字符
  23. */
  24. @property (strong, nonatomic) NSString *object;
  25. /**
  26. 存储桶名称
  27. */
  28. @property (strong, nonatomic) NSString *bucket;
  29. /**
  30. 在进行HTTP请求的时候,您可以通过设置该参数来设置自定义的一些头部信息。
  31. */
  32. @property (strong, nonatomic) NSDictionary* customHeaders;
  33. /**
  34. 需要上传的对象内容。可以传入NSData*或者NSURL*类型的变量
  35. */
  36. @property (strong, nonatomic) BodyType body;
  37. /**
  38. RFC 2616 中定义的缓存策略,将作为 Object 元数据保存
  39. */
  40. @property (strong, nonatomic) NSString *cacheControl;
  41. /**
  42. RFC 2616 中定义的文件名称,将作为 Object 元数据保存
  43. */
  44. @property (strong, nonatomic) NSString *contentDisposition;
  45. /**
  46. 当使用 Expect: 100-continue 时,在收到服务端确认后,才会发送请求内容
  47. */
  48. @property (strong, nonatomic) NSString *expect;
  49. /**
  50. RFC 2616 中定义的过期时间,将作为 Object 元数据保存
  51. */
  52. @property (strong, nonatomic) NSString *expires;
  53. @property (strong, nonatomic) NSString *contentSHA1;
  54. /**
  55. 对象的存储级别
  56. */
  57. @property (assign, nonatomic) QCloudCOSStorageClass storageClass;
  58. /**
  59. 定义 Object 的 ACL(Access Control List) 属性。有效值:private,public-read-write,public-read;默认值:private
  60. */
  61. @property (strong, nonatomic) NSString *accessControlList;
  62. /**
  63. 赋予被授权者读的权限。格式:id=" ",id=" ";
  64. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  65. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  66. */
  67. @property (strong, nonatomic) NSString *grantRead;
  68. /**
  69. 赋予被授权者写的权限。格式:id=" ",id=" ";
  70. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  71. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  72. */
  73. @property (strong, nonatomic) NSString *grantWrite;
  74. /**
  75. 赋予被授权者读写权限。格式: id=" ",id=" " ;
  76. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  77. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  78. */
  79. @property (strong, nonatomic) NSString *grantFullControl;
  80. /**
  81. 表明该请求是否已经被中断
  82. */
  83. @property (assign, atomic, readonly) BOOL aborted;
  84. /**
  85. 如果该request产生了分片上传的请求,那么在分片上传初始化完成后,会通过这个block来回调,可以在该回调block中获取分片完成后的bucket, key, uploadID,以及用于后续上传失败后恢复上传的ResumeData。
  86. */
  87. @property (nonatomic, copy) InitMultipleUploadFinishBlock initMultipleUploadFinishBlock;
  88. /**
  89. 上传完成后会通过该block回调。若error为空,可视为成功。
  90. @param QCloudRequestFinishBlock 上传完成后的回调
  91. */
  92. - (void) setFinishBlock:(void (^)(QCloudUploadObjectResult* result, NSError* error))QCloudRequestFinishBlock;
  93. #pragma resume
  94. + (instancetype) requestWithRequestData:(QCloudCOSXMLUploadObjectResumeData)resumeData;
  95. - (QCloudCOSXMLUploadObjectResumeData) cancelByProductingResumeData:(NSError* __autoreleasing*)error;
  96. - (void) abort:(QCloudRequestFinishBlock)finishBlock;
  97. @end