uploadFileManager.m 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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.videoData = model.videoData;
  34. curModel.filename = [model.asset valueForKey:@"filename"];
  35. curModel.curUploadStateType = uploadStateWait;
  36. if(model.type == TZAssetModelMediaTypeVideo){
  37. curModel.curUploadFileType = uploadFileTypeVideo;
  38. }
  39. else{
  40. curModel.curUploadFileType = uploadFileTypeImage;
  41. }
  42. [_fileModelDataArr addObject:curModel];
  43. //保存到数据库
  44. curModel.bg_tableName = upLoadFile_image_tableName;
  45. [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  46. HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
  47. }];
  48. }
  49. KWeakSelf
  50. if(_fileModelDataArr.count > 0){
  51. //骚操作 重新查出来 拿到bg_id
  52. [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName limit:_fileModelDataArr.count orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
  53. for (int i=0; i<array.count; i++) {
  54. uploadFileDataModel *bg_mod = array[i];
  55. for (uploadFileDataModel *data_mod in _fileModelDataArr) {
  56. if([data_mod.filename isEqualToString:bg_mod.filename]){
  57. data_mod.bg_id = bg_mod.bg_id;
  58. //HLog(@"bg_id:%@",data_mod.bg_id);
  59. break;
  60. }
  61. }
  62. }
  63. [weakSelf beginUploadFileFun];
  64. }];
  65. //[self beginUploadFileFun];
  66. }
  67. return _fileModelDataArr;
  68. }
  69. - (void)beginUploadFileFun
  70. {
  71. _curUploadFileDataModel = _fileModelDataArr.firstObject;
  72. [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileBeginNotification object:_curUploadFileDataModel];
  73. }
  74. //修改文件上传的状态
  75. - (void)changeUploadFileState:(uploadStateType)curUploadStateType withDidUploadBytes:(long)didUpLoadBytes complete:(custom_complete_B)complete
  76. {
  77. _curUploadFileDataModel.curUploadStateType = curUploadStateType;
  78. _curUploadFileDataModel.didUploadBytes = didUpLoadBytes;
  79. [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileRefreshNotification object:_curUploadFileDataModel];
  80. if(curUploadStateType == uploadStateUploading){
  81. return;
  82. }
  83. //NSNumber * numberUploadState = nil;
  84. NSString* where = nil;
  85. // if(curUploadStateType == uploadStateDone)
  86. // {//只有上传中的才可能是完成的
  87. // numberUploadState = [NSNumber numberWithInt:uploadStateUploading];
  88. // where = [NSString stringWithFormat:@"where %@=%@ and %@=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"curUploadStateType"),bg_sqlValue(numberUploadState)];
  89. // }
  90. // else
  91. // {//查找非上传完成的
  92. // numberUploadState = [NSNumber numberWithInt:uploadStateDone];
  93. // where = [NSString stringWithFormat:@"where %@=%@ and %@!=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"curUploadStateType"),bg_sqlValue(numberUploadState)];
  94. // }
  95. where = [NSString stringWithFormat:@"where %@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(_curUploadFileDataModel.bg_id)];
  96. HLog(@"ffff:%@",_curUploadFileDataModel.bg_id);
  97. [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
  98. for (uploadFileDataModel * curModel in array) {
  99. curModel.curUploadStateType = curUploadStateType;
  100. curModel.didUploadBytes = didUpLoadBytes;
  101. if(curUploadStateType == uploadStateDone){
  102. curModel.videoData = [NSData new];
  103. HLog(@"");
  104. }
  105. [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
  106. HLog(@"%@ 写入 %@", self->_curUploadFileDataModel.filename, isSuccess ? @"成功":@"失败");
  107. }];
  108. }
  109. complete(YES);
  110. }];
  111. }
  112. - (void)uploadFileDoneFun
  113. {
  114. long totalSizeByte = [_curUploadFileDataModel.imageData length];
  115. if(_curUploadFileDataModel.curUploadFileType == uploadFileTypeVideo){
  116. totalSizeByte = [_curUploadFileDataModel.videoData length];
  117. }
  118. [self changeUploadFileState:uploadStateDone withDidUploadBytes:totalSizeByte complete:^(BOOL isSuccess) {
  119. [self->_fileModelDataArr removeObject:self->_curUploadFileDataModel];
  120. if(self->_fileModelDataArr.count > 0){
  121. [self beginUploadFileFun];
  122. }
  123. }];
  124. }
  125. @end