FDQiniuManager.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // FDQiniuManager.m
  3. // FDNetworkObjC
  4. //
  5. // Created by fandongtongxue on 2020/2/29.
  6. //
  7. #import "FDQiniuManager.h"
  8. #import <Qiniu/QiniuSDK.h>
  9. #import "FDQiniuResponseModel.h"
  10. #import <FDFoundationObjC/FDFoundationObjC.h>
  11. #import <SDWebImage/NSData+ImageContentType.h>
  12. @implementation FDQiniuManager
  13. + (FDQiniuManager *)defaultManager{
  14. static FDQiniuManager *manager = nil;
  15. static dispatch_once_t predicate;
  16. dispatch_once(&predicate, ^{
  17. manager = [[self alloc] init];
  18. });
  19. return manager;
  20. }
  21. - (void)UPLOAD:(NSData *)fileData token:(NSString *)token progressHandler:(fd_qiniuProgressHandler)progressHandler completeHandler:(fd_qiniuCompleteHandler)completeHandler{
  22. [self UPLOAD:fileData token:token key:nil params:nil mime:nil progressHandler:progressHandler completeHandler:completeHandler];
  23. }
  24. - (void)UPLOAD:(NSData *)fileData token:(NSString *)token key:(NSString *)key progressHandler:(fd_qiniuProgressHandler)progressHandler completeHandler:(fd_qiniuCompleteHandler)completeHandler{
  25. [self UPLOAD:fileData token:token key:key params:nil mime:nil progressHandler:progressHandler completeHandler:completeHandler];
  26. }
  27. - (void)UPLOAD:(NSData *)fileData token:(NSString *)token key:(NSString *)key params:(NSDictionary *)param mime:(NSString *)mime progressHandler:(fd_qiniuProgressHandler)progressHandler completeHandler:(fd_qiniuCompleteHandler)completeHandler{
  28. NSString *newKey = key;
  29. NSString *suffix = @"";
  30. if (!key.length) {
  31. SDImageFormat format = [NSData sd_imageFormatForImageData:fileData];
  32. switch (format) {
  33. case SDImageFormatPNG:
  34. suffix = @".png";
  35. break;
  36. case SDImageFormatGIF:
  37. suffix = @".gif";
  38. break;
  39. case SDImageFormatHEIC:
  40. suffix = @".heic";
  41. break;
  42. case SDImageFormatHEIF:
  43. suffix = @".heif";
  44. break;
  45. case SDImageFormatJPEG:
  46. suffix = @".jpg";
  47. break;
  48. case SDImageFormatTIFF:
  49. suffix = @".tiff";
  50. break;
  51. case SDImageFormatWebP:
  52. suffix = @".webp";
  53. break;
  54. default:
  55. break;
  56. }
  57. }
  58. newKey = [NSString stringWithFormat:@"%@%@",[[NSDate date] fd_currentTimestamp],suffix];
  59. QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
  60. builder.useHttps = NO;
  61. builder.useConcurrentResumeUpload = YES;
  62. builder.concurrentTaskCount = 8;
  63. }];
  64. QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
  65. QNUploadOption *opt = [[QNUploadOption alloc] initWithMime:mime progressHandler:^(NSString *key, float percent) {
  66. if (progressHandler) {
  67. progressHandler(percent);
  68. }
  69. } params:param checkCrc:NO cancellationSignal:nil];
  70. [upManager putData:fileData key:newKey token:token
  71. complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
  72. FDQiniuResponseModel *model = [[FDQiniuResponseModel alloc]init];
  73. model.isSuccess = info.isOK;
  74. model.key = key;
  75. if (completeHandler) {
  76. completeHandler(model);
  77. }
  78. } option:opt];
  79. }
  80. @end