QNFormUpload.m 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // QNFormUpload.m
  3. // QiniuSDK
  4. //
  5. // Created by bailong on 15/1/4.
  6. // Copyright (c) 2015年 Qiniu. All rights reserved.
  7. //
  8. #import "QNDefine.h"
  9. #import "QNLogUtil.h"
  10. #import "QNFormUpload.h"
  11. #import "QNResponseInfo.h"
  12. #import "QNUpProgress.h"
  13. #import "QNRequestTransaction.h"
  14. @interface QNFormUpload ()
  15. @property(nonatomic, strong)QNUpProgress *progress;
  16. @property(nonatomic, strong)QNRequestTransaction *uploadTransaction;
  17. @end
  18. @implementation QNFormUpload
  19. - (void)startToUpload {
  20. [super startToUpload];
  21. QNLogInfo(@"key:%@ form上传", self.key);
  22. self.uploadTransaction = [[QNRequestTransaction alloc] initWithConfig:self.config
  23. uploadOption:self.option
  24. targetRegion:[self getTargetRegion]
  25. currentRegion:[self getCurrentRegion]
  26. key:self.key
  27. token:self.token];
  28. kQNWeakSelf;
  29. void(^progressHandler)(long long totalBytesWritten, long long totalBytesExpectedToWrite) = ^(long long totalBytesWritten, long long totalBytesExpectedToWrite){
  30. kQNStrongSelf;
  31. [self.progress progress:self.key uploadBytes:totalBytesWritten totalBytes:totalBytesExpectedToWrite];
  32. };
  33. [self.uploadTransaction uploadFormData:self.data
  34. fileName:self.fileName
  35. progress:progressHandler
  36. complete:^(QNResponseInfo * _Nullable responseInfo, QNUploadRegionRequestMetrics * _Nullable metrics, NSDictionary * _Nullable response) {
  37. kQNStrongSelf;
  38. [self addRegionRequestMetricsOfOneFlow:metrics];
  39. if (!responseInfo.isOK) {
  40. if (![self switchRegionAndUploadIfNeededWithErrorResponse:responseInfo]) {
  41. [self complete:responseInfo response:response];
  42. }
  43. return;
  44. }
  45. [self.progress notifyDone:self.key totalBytes:self.data.length];
  46. [self complete:responseInfo response:response];
  47. }];
  48. }
  49. - (QNUpProgress *)progress {
  50. if (_progress == nil) {
  51. _progress = [QNUpProgress progress:self.option.progressHandler byteProgress:self.option.byteProgressHandler];
  52. }
  53. return _progress;
  54. }
  55. - (NSString *)upType {
  56. return QNUploadUpTypeForm;
  57. }
  58. @end