uploadFileManager.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // uploadFileManager.m
  3. // 隐私保护
  4. //
  5. // Created by xd h on 2023/11/15.
  6. //
  7. #import "uploadFileManager.h"
  8. @implementation uploadFileManager
  9. static uploadFileManager * cur_uploadFileShareInstance = nil;
  10. +(uploadFileManager *)shareInstance;
  11. {
  12. static dispatch_once_t onceToken;
  13. dispatch_once(&onceToken, ^{
  14. cur_uploadFileShareInstance = [[uploadFileManager alloc] init];
  15. });
  16. return cur_uploadFileShareInstance;
  17. }
  18. - (id)init
  19. {
  20. self = [super init];
  21. if (self) {
  22. //[self initManager];
  23. }
  24. return self;
  25. }
  26. //把TZAssetModel 转成 我们需要上传的model
  27. - (NSMutableArray*)handlTZAssetModelToUploadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems
  28. {
  29. _fileModelDataArr = [NSMutableArray new];
  30. for (TZAssetModel * model in indexPathsForSelectedItems) {
  31. uploadFileDataModel * curModel = [uploadFileDataModel new];
  32. curModel.imageData = model.imageData;
  33. curModel.filename = [model.asset valueForKey:@"filename"];
  34. curModel.uploadType = uploadStateWait;
  35. [_fileModelDataArr addObject:curModel];
  36. //保存到数据库
  37. curModel.bg_tableName = upLoadFile_image_tableName;
  38. [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  39. HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
  40. }];
  41. }
  42. if(_fileModelDataArr.count > 0){
  43. [self beginUploadFileFun];
  44. }
  45. return _fileModelDataArr;
  46. }
  47. - (void)beginUploadFileFun
  48. {
  49. _curUploadFileDataModel = _fileModelDataArr.firstObject;
  50. [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileBeginNotification object:_curUploadFileDataModel];
  51. }
  52. //修改文件上传的状态
  53. - (void)changeUploadFileState:(uploadStateType)curUploadStateType withDidUploadBytes:(NSInteger)didUpLoadBytes complete:(custom_complete_B)complete
  54. {
  55. // _curUploadFileDataModel.imageData = nil;
  56. // _curUploadFileDataModel.uploadType = uploadStateDone;
  57. //
  58. NSNumber * numberUploadState = nil;
  59. if(curUploadStateType == uploadStateDone)
  60. {
  61. numberUploadState = [NSNumber numberWithInt:uploadStateUploading];
  62. }
  63. else{
  64. numberUploadState = [NSNumber numberWithInt:uploadStateDone];
  65. }
  66. NSString* where = nil;
  67. if(curUploadStateType == uploadStateDone)
  68. {
  69. where = [NSString stringWithFormat:@"where %@=%@ and %@=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"uploadType"),bg_sqlValue(numberUploadState)];
  70. }
  71. else
  72. {
  73. where = [NSString stringWithFormat:@"where %@=%@ and %@!=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"uploadType"),bg_sqlValue(numberUploadState)];
  74. }
  75. [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
  76. for (uploadFileDataModel * curModel in array) {
  77. curModel.uploadType = curUploadStateType;
  78. curModel.didUploadBytes = didUpLoadBytes;
  79. if(curUploadStateType == uploadStateDone){
  80. curModel.imageData = [NSData data];
  81. }
  82. [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  83. HLog(@"%@ 写入 %@", self->_curUploadFileDataModel.filename, isSuccess ? @"成功":@"失败");
  84. }];
  85. }
  86. complete(YES);
  87. }];
  88. }
  89. - (void)uploadFileDoneFun
  90. {
  91. [self changeUploadFileState:uploadStateDone withDidUploadBytes:[_curUploadFileDataModel.imageData length] complete:^(BOOL isSuccess) {
  92. [self->_fileModelDataArr removeObject:self->_curUploadFileDataModel];
  93. if(self->_fileModelDataArr.count > 0){
  94. [self beginUploadFileFun];
  95. }
  96. }];
  97. }
  98. @end