QNUploadManager.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // QNUploader.h
  3. // QiniuSDK
  4. //
  5. // Created by bailong on 14-9-28.
  6. // Copyright (c) 2014年 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "QNRecorderDelegate.h"
  10. @class QNResponseInfo;
  11. @class QNUploadOption;
  12. @class QNConfiguration;
  13. @class ALAsset;
  14. @class PHAsset;
  15. @class PHAssetResource;
  16. /**
  17. * 上传完成后的回调函数
  18. *
  19. * @param info 上下文信息,包括状态码,错误值
  20. * @param key 上传时指定的key,原样返回
  21. * @param resp 上传成功会返回文件信息,失败为nil; 可以通过此值是否为nil 判断上传结果
  22. */
  23. typedef void (^QNUpCompletionHandler)(QNResponseInfo *info, NSString *key, NSDictionary *resp);
  24. /**
  25. 管理上传的类,可以生成一次,持续使用,不必反复创建。
  26. */
  27. @interface QNUploadManager : NSObject
  28. /**
  29. * 默认构造方法,没有持久化记录
  30. *
  31. * @return 上传管理类实例
  32. */
  33. - (instancetype)init;
  34. /**
  35. * 使用一个持久化的记录接口进行记录的构造方法
  36. *
  37. * @param recorder 持久化记录接口实现
  38. *
  39. * @return 上传管理类实例
  40. */
  41. - (instancetype)initWithRecorder:(id<QNRecorderDelegate>)recorder;
  42. /**
  43. * 使用持久化记录接口以及持久化key生成函数的构造方法,默认情况下使用上传存储的key, 如果key为nil或者有特殊字符比如/,建议使用自己的生成函数
  44. *
  45. * @param recorder 持久化记录接口实现
  46. * @param recorderKeyGenerator 持久化记录key生成函数
  47. *
  48. * @return 上传管理类实例
  49. */
  50. - (instancetype)initWithRecorder:(id<QNRecorderDelegate>)recorder
  51. recorderKeyGenerator:(QNRecorderKeyGenerator)recorderKeyGenerator;
  52. /**
  53. * 使用配置信息生成上传实例
  54. *
  55. * @param config 配置信息
  56. *
  57. * @return 上传管理类实例
  58. */
  59. - (instancetype)initWithConfiguration:(QNConfiguration *)config;
  60. /**
  61. * 方便使用的单例方法
  62. *
  63. * @param config 配置信息
  64. *
  65. * @return 上传管理类实例
  66. */
  67. + (instancetype)sharedInstanceWithConfiguration:(QNConfiguration *)config;
  68. /**
  69. * 直接上传数据
  70. *
  71. * @param data 待上传的数据
  72. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  73. * @param token 上传需要的token, 由服务器生成
  74. * @param completionHandler 上传完成后的回调函数
  75. * @param option 上传时传入的可选参数
  76. */
  77. - (void)putData:(NSData *)data
  78. key:(NSString *)key
  79. token:(NSString *)token
  80. complete:(QNUpCompletionHandler)completionHandler
  81. option:(QNUploadOption *)option;
  82. /**
  83. * 上传文件
  84. *
  85. * @param filePath 文件路径
  86. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  87. * @param token 上传需要的token, 由服务器生成
  88. * @param completionHandler 上传完成后的回调函数
  89. * @param option 上传时传入的可选参数
  90. */
  91. - (void)putFile:(NSString *)filePath
  92. key:(NSString *)key
  93. token:(NSString *)token
  94. complete:(QNUpCompletionHandler)completionHandler
  95. option:(QNUploadOption *)option;
  96. /**
  97. * 上传ALAsset文件
  98. *
  99. * @param alasset ALAsset文件
  100. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  101. * @param token 上传需要的token, 由服务器生成
  102. * @param completionHandler 上传完成后的回调函数
  103. * @param option 上传时传入的可选参数
  104. */
  105. - (void)putALAsset:(ALAsset *)asset
  106. key:(NSString *)key
  107. token:(NSString *)token
  108. complete:(QNUpCompletionHandler)completionHandler
  109. option:(QNUploadOption *)option;
  110. /**
  111. * 上传PHAsset文件(IOS8 andLater)
  112. *
  113. * @param asset PHAsset文件
  114. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  115. * @param token 上传需要的token, 由服务器生成
  116. * @param completionHandler 上传完成后的回调函数
  117. * @param option 上传时传入的可选参数
  118. */
  119. - (void)putPHAsset:(PHAsset *)asset
  120. key:(NSString *)key
  121. token:(NSString *)token
  122. complete:(QNUpCompletionHandler)completionHandler
  123. option:(QNUploadOption *)option;
  124. /**
  125. * 上传PHAssetResource文件(IOS9.1 andLater)
  126. *
  127. * @param asset PHAssetResource文件
  128. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  129. * @param token 上传需要的token, 由服务器生成
  130. * @param completionHandler 上传完成后的回调函数
  131. * @param option 上传时传入的可选参数
  132. */
  133. - (void)putPHAssetResource:(PHAssetResource *)assetResource
  134. key:(NSString *)key
  135. token:(NSString *)token
  136. complete:(QNUpCompletionHandler)completionHandler
  137. option:(QNUploadOption *)option;
  138. @end