QNUploadManager.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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 PHAsset;
  14. @class PHAssetResource;
  15. #if !TARGET_OS_MACCATALYST
  16. @class ALAsset;
  17. #endif
  18. /**
  19. * 上传完成后的回调函数
  20. *
  21. * @param info 上下文信息,包括状态码,错误值
  22. * @param key 上传时指定的key,原样返回
  23. * @param resp 上传成功会返回文件信息,失败为nil; 可以通过此值是否为nil 判断上传结果
  24. */
  25. typedef void (^QNUpCompletionHandler)(QNResponseInfo *info, NSString *key, NSDictionary *resp);
  26. /**
  27. 管理上传的类,可以生成一次,持续使用,不必反复创建。
  28. */
  29. @interface QNUploadManager : NSObject
  30. /**
  31. * 默认构造方法,没有持久化记录
  32. *
  33. * @return 上传管理类实例
  34. */
  35. - (instancetype)init;
  36. /**
  37. * 使用一个持久化的记录接口进行记录的构造方法
  38. *
  39. * @param recorder 持久化记录接口实现
  40. *
  41. * @return 上传管理类实例
  42. */
  43. - (instancetype)initWithRecorder:(id<QNRecorderDelegate>)recorder;
  44. /**
  45. * 使用持久化记录接口以及持久化key生成函数的构造方法,默认情况下使用上传存储的key, 如果key为nil或者有特殊字符比如/,建议使用自己的生成函数
  46. *
  47. * @param recorder 持久化记录接口实现
  48. * @param recorderKeyGenerator 持久化记录key生成函数
  49. *
  50. * @return 上传管理类实例
  51. */
  52. - (instancetype)initWithRecorder:(id<QNRecorderDelegate>)recorder
  53. recorderKeyGenerator:(QNRecorderKeyGenerator)recorderKeyGenerator;
  54. /**
  55. * 使用配置信息生成上传实例
  56. *
  57. * @param config 配置信息
  58. *
  59. * @return 上传管理类实例
  60. */
  61. - (instancetype)initWithConfiguration:(QNConfiguration *)config;
  62. /**
  63. * 方便使用的单例方法
  64. *
  65. * @param config 配置信息
  66. *
  67. * @return 上传管理类实例
  68. */
  69. + (instancetype)sharedInstanceWithConfiguration:(QNConfiguration *)config;
  70. /**
  71. * 直接上传数据
  72. *
  73. * @param data 待上传的数据
  74. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  75. * @param token 上传需要的token, 由服务器生成
  76. * @param completionHandler 上传完成后的回调函数
  77. * @param option 上传时传入的可选参数
  78. */
  79. - (void)putData:(NSData *)data
  80. key:(NSString *)key
  81. token:(NSString *)token
  82. complete:(QNUpCompletionHandler)completionHandler
  83. option:(QNUploadOption *)option;
  84. /**
  85. * 上传数据流
  86. *
  87. * @param inputStream 数据流
  88. * @param sourceId 数据 id; 用于断点续传的标识
  89. * @param size 流大小,主要用来计算上传进度,不能预知大小传 -1
  90. * @param fileName 文件名
  91. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  92. * @param token 上传需要的token, 由服务器生成
  93. * @param completionHandler 上传完成后的回调函数
  94. * @param option 上传时传入的可选参数
  95. */
  96. - (void)putInputStream:(NSInputStream *)inputStream
  97. sourceId:(NSString *)sourceId
  98. size:(long long)size
  99. fileName:(NSString *)fileName
  100. key:(NSString *)key
  101. token:(NSString *)token
  102. complete:(QNUpCompletionHandler)completionHandler
  103. option:(QNUploadOption *)option;
  104. /**
  105. * 上传文件
  106. *
  107. * @param filePath 文件路径
  108. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  109. * @param token 上传需要的token, 由服务器生成
  110. * @param completionHandler 上传完成后的回调函数
  111. * @param option 上传时传入的可选参数
  112. */
  113. - (void)putFile:(NSString *)filePath
  114. key:(NSString *)key
  115. token:(NSString *)token
  116. complete:(QNUpCompletionHandler)completionHandler
  117. option:(QNUploadOption *)option;
  118. #if !TARGET_OS_MACCATALYST
  119. /**
  120. * 上传ALAsset文件
  121. *
  122. * @param asset ALAsset文件
  123. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  124. * @param token 上传需要的token, 由服务器生成
  125. * @param completionHandler 上传完成后的回调函数
  126. * @param option 上传时传入的可选参数
  127. */
  128. - (void)putALAsset:(ALAsset *)asset
  129. key:(NSString *)key
  130. token:(NSString *)token
  131. complete:(QNUpCompletionHandler)completionHandler
  132. option:(QNUploadOption *)option API_UNAVAILABLE(macos, tvos);
  133. #endif
  134. /**
  135. * 上传PHAsset文件(IOS8 andLater)
  136. *
  137. * @param asset PHAsset文件
  138. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  139. * @param token 上传需要的token, 由服务器生成
  140. * @param completionHandler 上传完成后的回调函数
  141. * @param option 上传时传入的可选参数
  142. */
  143. - (void)putPHAsset:(PHAsset *)asset
  144. key:(NSString *)key
  145. token:(NSString *)token
  146. complete:(QNUpCompletionHandler)completionHandler
  147. option:(QNUploadOption *)option API_AVAILABLE(ios(9.1)) API_UNAVAILABLE(macos, tvos);
  148. /**
  149. * 上传PHAssetResource文件(IOS9.1 andLater)
  150. *
  151. * @param assetResource PHAssetResource文件
  152. * @param key 上传到云存储的key,为nil时表示是由七牛生成
  153. * @param token 上传需要的token, 由服务器生成
  154. * @param completionHandler 上传完成后的回调函数
  155. * @param option 上传时传入的可选参数
  156. */
  157. - (void)putPHAssetResource:(PHAssetResource *)assetResource
  158. key:(NSString *)key
  159. token:(NSString *)token
  160. complete:(QNUpCompletionHandler)completionHandler
  161. option:(QNUploadOption *)option API_AVAILABLE(ios(9)) API_UNAVAILABLE(macos, tvos);
  162. @end