Преглед на файлове

1.单个图片上传成功

huangxiaodong преди 10 месеца
родител
ревизия
f956cb2133

+ 32 - 0
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -758,6 +758,14 @@
 		6B9714402BCD00CA00CE0096 /* ComontAlretType2ViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B97143D2BCD00C900CE0096 /* ComontAlretType2ViewController.h */; };
 		6B9714412BCD00CA00CE0096 /* ComontAlretType2ViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B97143D2BCD00C900CE0096 /* ComontAlretType2ViewController.h */; };
 		6B9714422BCD00CA00CE0096 /* ComontAlretType2ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B97143E2BCD00C900CE0096 /* ComontAlretType2ViewController.m */; };
+		6B97739B2C637C4800213317 /* nasUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B97739A2C637C4800213317 /* nasUploadManager.m */; };
+		6B97739C2C637C4800213317 /* nasUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B9773992C637C4800213317 /* nasUploadManager.h */; };
+		6B97739D2C637C4800213317 /* nasUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B9773992C637C4800213317 /* nasUploadManager.h */; };
+		6B97739E2C637C4800213317 /* nasUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B97739A2C637C4800213317 /* nasUploadManager.m */; };
+		6B9773A12C637E3A00213317 /* nasUploadFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B9773A02C637E3A00213317 /* nasUploadFileManager.m */; };
+		6B9773A22C637E3A00213317 /* nasUploadFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B97739F2C637E3A00213317 /* nasUploadFileManager.h */; };
+		6B9773A32C637E3A00213317 /* nasUploadFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B97739F2C637E3A00213317 /* nasUploadFileManager.h */; };
+		6B9773A42C637E3A00213317 /* nasUploadFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B9773A02C637E3A00213317 /* nasUploadFileManager.m */; };
 		6BA08F082C0187DD00A2242D /* boxDownloadFileRecordCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BA08F062C0187DC00A2242D /* boxDownloadFileRecordCell.h */; };
 		6BA08F092C0187DD00A2242D /* boxDownloadFileRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BA08F072C0187DC00A2242D /* boxDownloadFileRecordCell.m */; };
 		6BA08F0A2C0187DD00A2242D /* boxDownloadFileRecordCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BA08F062C0187DC00A2242D /* boxDownloadFileRecordCell.h */; };
@@ -1911,6 +1919,10 @@
 		6B9354AB2BF3879200AA8D31 /* shareRecordTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = shareRecordTableViewCell.m; sourceTree = "<group>"; };
 		6B97143D2BCD00C900CE0096 /* ComontAlretType2ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComontAlretType2ViewController.h; sourceTree = "<group>"; };
 		6B97143E2BCD00C900CE0096 /* ComontAlretType2ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ComontAlretType2ViewController.m; sourceTree = "<group>"; };
+		6B9773992C637C4800213317 /* nasUploadManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nasUploadManager.h; sourceTree = "<group>"; };
+		6B97739A2C637C4800213317 /* nasUploadManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = nasUploadManager.m; sourceTree = "<group>"; };
+		6B97739F2C637E3A00213317 /* nasUploadFileManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = nasUploadFileManager.h; sourceTree = "<group>"; };
+		6B9773A02C637E3A00213317 /* nasUploadFileManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = nasUploadFileManager.m; sourceTree = "<group>"; };
 		6BA08F062C0187DC00A2242D /* boxDownloadFileRecordCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = boxDownloadFileRecordCell.h; sourceTree = "<group>"; };
 		6BA08F072C0187DC00A2242D /* boxDownloadFileRecordCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = boxDownloadFileRecordCell.m; sourceTree = "<group>"; };
 		6BA08F3B2C01D05B00A2242D /* CWFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CWFileManager.h; sourceTree = "<group>"; };
@@ -3075,6 +3087,7 @@
 		6B5D86632C227C4A008D25EA /* NAS */ = {
 			isa = PBXGroup;
 			children = (
+				6B9773982C637BFB00213317 /* nasUploadManager */,
 				6B238C8B2C60AA1B00C5AC2F /* nasDownloadManager */,
 				6B8A5ADD2C3BCB2700E40B19 /* recenFile */,
 				6BC741362C23C7BE0049BA8D /* model */,
@@ -3252,6 +3265,17 @@
 			path = recenFile;
 			sourceTree = "<group>";
 		};
+		6B9773982C637BFB00213317 /* nasUploadManager */ = {
+			isa = PBXGroup;
+			children = (
+				6B9773992C637C4800213317 /* nasUploadManager.h */,
+				6B97739A2C637C4800213317 /* nasUploadManager.m */,
+				6B97739F2C637E3A00213317 /* nasUploadFileManager.h */,
+				6B9773A02C637E3A00213317 /* nasUploadFileManager.m */,
+			);
+			path = nasUploadManager;
+			sourceTree = "<group>";
+		};
 		6BA08F452C01D05B00A2242D /* CWUploadManage */ = {
 			isa = PBXGroup;
 			children = (
@@ -3760,6 +3784,7 @@
 				184C8AD02A94980D00F26650 /* CustomerWebViewController.h in Headers */,
 				6B93548F2BF30A8C00AA8D31 /* editTypeBottomView.h in Headers */,
 				6BF558BA2C4508CB00701854 /* previewAudioPortraitDetailsView.h in Headers */,
+				6B9773A22C637E3A00213317 /* nasUploadFileManager.h in Headers */,
 				6B2C1E862C070ADE00FDCF82 /* ZFPlayerConst.h in Headers */,
 				6BFF26992AFA16DA00FCB4F7 /* forgetSecretKeyViewController.h in Headers */,
 				6B45C4FD2B57BC87007E6911 /* cloudPhoneExtraFileListModel.h in Headers */,
@@ -3808,6 +3833,7 @@
 				6B7E04432C3EA65A004B4948 /* previewLandscapeTopView.h in Headers */,
 				6B7E04302C3E5A98004B4948 /* customDownloadOperation.h in Headers */,
 				6B4C0F6A2C0314BA0070EF2E /* DFPlayerRequestManager.h in Headers */,
+				6B97739C2C637C4800213317 /* nasUploadManager.h in Headers */,
 				6B2C1E882C070ADE00FDCF82 /* ZFPlayerController.h in Headers */,
 				6B1FBD262B4503E700926382 /* photosBackupsTaskModel.h in Headers */,
 				6B34DC4E2BF1BA11002DD1EF /* previewImageOrVideoViewController.h in Headers */,
@@ -4027,6 +4053,7 @@
 				6BD5069E2B9576A4006E7CB0 /* CustomerWebViewController.h in Headers */,
 				6B9354902BF30A8C00AA8D31 /* editTypeBottomView.h in Headers */,
 				6BF558BC2C4508CB00701854 /* previewAudioPortraitDetailsView.h in Headers */,
+				6B9773A32C637E3A00213317 /* nasUploadFileManager.h in Headers */,
 				6B2C1E872C070ADE00FDCF82 /* ZFPlayerConst.h in Headers */,
 				6BD5069F2B9576A4006E7CB0 /* forgetSecretKeyViewController.h in Headers */,
 				6BD506A02B9576A4006E7CB0 /* cloudPhoneExtraFileListModel.h in Headers */,
@@ -4075,6 +4102,7 @@
 				6B7E04462C3EA65A004B4948 /* previewLandscapeTopView.h in Headers */,
 				6B7E04312C3E5A98004B4948 /* customDownloadOperation.h in Headers */,
 				6B4C0F6B2C0314BA0070EF2E /* DFPlayerRequestManager.h in Headers */,
+				6B97739D2C637C4800213317 /* nasUploadManager.h in Headers */,
 				6B2C1E892C070ADE00FDCF82 /* ZFPlayerController.h in Headers */,
 				6BD506B62B9576A4006E7CB0 /* photosBackupsTaskModel.h in Headers */,
 				6B34DC502BF1BA11002DD1EF /* previewImageOrVideoViewController.h in Headers */,
@@ -4780,6 +4808,7 @@
 				6BD5074D2B9576A4006E7CB0 /* downloadThumbnailManager.m in Sources */,
 				6BD5074E2B9576A4006E7CB0 /* couldPhoneBaseInfoModel.m in Sources */,
 				6BD5074F2B9576A4006E7CB0 /* uploadFileBottomView.m in Sources */,
+				6B97739E2C637C4800213317 /* nasUploadManager.m in Sources */,
 				6BD507502B9576A4006E7CB0 /* LogoSelectView.m in Sources */,
 				6B679DED2C252A4E00D0DC03 /* NASMySpaceViewController.m in Sources */,
 				6B3941D22C50A7CA00C8FB28 /* queryShareReportMarkModel.m in Sources */,
@@ -4820,6 +4849,7 @@
 				6BD507652B9576A4006E7CB0 /* HWHomeListCell.m in Sources */,
 				6BD507662B9576A4006E7CB0 /* JSONKeyMapper.m in Sources */,
 				6BD507672B9576A4006E7CB0 /* SimplePing.m in Sources */,
+				6B9773A42C637E3A00213317 /* nasUploadFileManager.m in Sources */,
 				6B6D42F32C295BCD006CAE3A /* playerSetView.m in Sources */,
 				6BD507682B9576A4006E7CB0 /* FMResultSet.m in Sources */,
 				6B34DC6E2BF2070D002DD1EF /* titleLabelReusableView.m in Sources */,
@@ -5129,6 +5159,7 @@
 				6B5D40382B4BEEF8000965CF /* downloadThumbnailManager.m in Sources */,
 				6B7272582B0DAF7600C03F87 /* couldPhoneBaseInfoModel.m in Sources */,
 				6B0581B32AFE02B100D37290 /* uploadFileBottomView.m in Sources */,
+				6B97739B2C637C4800213317 /* nasUploadManager.m in Sources */,
 				181E85012A8F6B1800292B96 /* LogoSelectView.m in Sources */,
 				6B679DEB2C252A4E00D0DC03 /* NASMySpaceViewController.m in Sources */,
 				6B3941CF2C50A7CA00C8FB28 /* queryShareReportMarkModel.m in Sources */,
@@ -5169,6 +5200,7 @@
 				A084D69827E8657800054880 /* HWHomeListCell.m in Sources */,
 				183AE6032A89CE3C00B11CB0 /* JSONKeyMapper.m in Sources */,
 				6BF52C9B2AD5546500A617DB /* SimplePing.m in Sources */,
+				6B9773A12C637E3A00213317 /* nasUploadFileManager.m in Sources */,
 				6B6D42F12C295BCD006CAE3A /* playerSetView.m in Sources */,
 				A08A950427E9A4E400C544BB /* FMResultSet.m in Sources */,
 				6B34DC6C2BF2070D002DD1EF /* titleLabelReusableView.m in Sources */,

+ 1 - 1
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m

@@ -17,7 +17,7 @@
 
 @implementation uploadFileManager
 static uploadFileManager * cur_uploadFileShareInstance = nil;
-+(uploadFileManager *)shareInstance;
++(uploadFileManager *)shareInstance
 {
     static dispatch_once_t onceToken;
     

+ 1 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.h

@@ -11,6 +11,7 @@
 #import "downloadThumbnailManager.h"
 #import "uploadImageOrVideoViewController.h"
 #import "nasDownloadFileManager.h"
+#import "nasUploadFileManager.h"
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 6 - 5
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m

@@ -513,7 +513,7 @@
 - (void)realGotoUploadFile:(NSMutableArray *)indexPathsForSelectedItems
 {
     KWeakSelf
-    [[uploadFileManager shareInstance] handlTZAssetModelToUploadFileDataFunBy:indexPathsForSelectedItems complete:^(NSMutableArray * _Nonnull Arr) {
+    [[nasUploadFileManager shareInstance] handlTZAssetModelToUploadFileDataFunBy:indexPathsForSelectedItems complete:^(NSMutableArray * _Nonnull Arr) {
         //NSMutableArray *arr1 = Arr;
         //[weakSelf setRecordBodyDataFunBy:arr1];
         
@@ -531,7 +531,7 @@
 {
     
     KWeakSelf
-    [[uploadFileManager shareInstance] getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+    [[nasUploadFileManager shareInstance] getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
         //[weakSelf setRecordBodyDataFunBy:Arr];
         
         weakSelf.didGetUploadDataType = YES;
@@ -558,9 +558,10 @@
                 }
             }
             
-            if(handleUploadArr.count >0){
-                [[uploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
-            }
+            //hxd del 0808
+//            if(handleUploadArr.count >0){
+//                [[uploadFileManager shareInstance] reUploadFileFunBy:handleUploadArr withAll:YES];
+//            }
         }
         
         mainBlock(^{

+ 37 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.h

@@ -0,0 +1,37 @@
+//
+//  nasUploadFileManager.h
+//  双子星云手机
+//
+//  Created by xd h on 2024/8/7.
+//
+
+#import <Foundation/Foundation.h>
+#import "uploadFileManager.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+#define nasUpLoadFile_tableName [[NSString alloc] initWithFormat:@"upLoadFile_tableName_%@",[connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn]
+
+@interface nasUploadFileManager : NSObject
++(instancetype)shareInstance;
+//数据库数据
+@property (nonatomic, strong) NSMutableArray * _Nullable databaseArr;
+//排队等待上传的文件列表
+@property (nonatomic, strong) NSMutableArray * _Nullable fileModelDataArr;
+@property (nonatomic, strong) uploadFileDataModel *curUploadFileDataModel;//当前上传的文件
+
+@property (nonatomic, assign) BOOL  isSuspendType;
+@property (nonatomic, assign) BOOL  isUploadIngType;
+@property (nonatomic, assign) BOOL  isNewAddTaskType;
+@property (nonatomic, assign) NSInteger  curUploadModelNumbers;
+@property (nonatomic, assign) NSInteger  reUploadIngSelectIndex;
+
+#pragma mark 读取数据库数据
+- (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete;
+
+//把TZAssetModel 转成 我们需要上传的model
+- (void)handlTZAssetModelToUploadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems complete:(custom_complete_Arr)complete;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 393 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.m

@@ -0,0 +1,393 @@
+//
+//  nasUploadFileManager.m
+//  双子星云手机
+//
+//  Created by xd h on 2024/8/7.
+//
+
+#import "nasUploadFileManager.h"
+#import "nasUploadManager.h"
+
+@implementation nasUploadFileManager
++ (instancetype)shareInstance {
+    static nasUploadFileManager *_instance;
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        _instance = [[self alloc] init];
+    });
+    return _instance;
+}
+
+#pragma mark 读取数据库数据
+- (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete
+{
+    if(_databaseArr && _databaseArr.count == 3 && !isReGet){
+        complete(_databaseArr);
+        return;
+    }
+    
+    if(!_databaseArr)
+    {
+        _databaseArr = [NSMutableArray new];
+    }
+    
+    //KWeakSelf
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+//        NSLock *lock = [NSLock new];
+//        [lock lock];
+        [uploadFileDataModel bg_findAsync:nasUpLoadFile_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+            NSMutableArray *failArr = [NSMutableArray new];
+            NSMutableArray *doneArr = [NSMutableArray new];
+            NSMutableArray *otherArr = [NSMutableArray new];
+            
+                for (uploadFileDataModel * curModel in array) {
+                    
+                    //图片 和视频 还原
+                    if(curModel.curUploadFileType == uploadFileTypeImage){
+
+                    }
+                    else if(curModel.curUploadFileType == uploadFileTypeVideo){
+
+                        if(curModel.curUploadStateType != uploadStateDone){
+                    
+                        }
+                    }
+                    
+                    if(curModel.curUploadStateType == uploadStateFail){
+                        [failArr addObject:curModel];
+                    }
+                    else if(curModel.curUploadStateType == uploadStateDone){
+                        [doneArr addObject:curModel];
+                    }
+                    else{
+                        [otherArr addObject:curModel];
+                    }
+                }
+            
+            NSLock *lock = [NSLock new];
+            [lock lock];
+            
+            NSMutableArray *newArr = [NSMutableArray new];
+            [newArr addObject:otherArr];
+            [newArr addObject:doneArr];
+            [newArr addObject:failArr];
+            self->_databaseArr = newArr;
+            
+            [lock unlock];
+            
+            complete(self->_databaseArr);
+        }];
+//        [lock unlock];
+    });
+
+}
+
+//把TZAssetModel 转成 我们需要上传的model
+- (void)handlTZAssetModelToUploadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems complete:(custom_complete_Arr)complete
+{
+    if(!indexPathsForSelectedItems && indexPathsForSelectedItems.count == 0){
+        complete(_databaseArr);
+        return;
+    }
+    
+    if(ksharedAppDelegate.DisabledFileTransferType){
+        if(ksharedAppDelegate.isImageNewFor130){
+            [[iToast makeText:NSLocalizedString(@"File_Transfer_Disable_tip",nil)] show];
+        }
+        else{
+            [[iToast makeText:NSLocalizedString(@"File_Transfer_Disable_tip2",nil)] show];
+        }
+        
+        complete(_databaseArr);
+        return;
+    }
+    
+    if(!_fileModelDataArr){
+        _fileModelDataArr = [NSMutableArray new];
+    }
+    
+    _isNewAddTaskType = YES;
+    
+    self.curUploadModelNumbers = indexPathsForSelectedItems.count;
+    
+    NSMutableArray *newUploadTaskArr = [NSMutableArray new];
+    
+    NSLock *lock = [NSLock new];
+    
+    for (TZAssetModel * model in indexPathsForSelectedItems) {
+        uploadFileDataModel * curModel = [uploadFileDataModel new];
+        curModel.asset = model.asset;
+        curModel.localIdentifier = model.asset.localIdentifier;
+        
+        BOOL isRepeatingTasksType = NO;
+        [lock lock];
+        //查询上传任务是否存在
+        if(_databaseArr && _databaseArr.count == 3 ){
+            NSMutableArray *uploadingArr = [[NSMutableArray alloc] initWithArray:_databaseArr[0]];
+            for (uploadFileDataModel *preModel in uploadingArr) {
+                if([preModel.localIdentifier isEqualToString:curModel.localIdentifier]){
+                    isRepeatingTasksType = YES;
+                    break;
+                }
+            }
+        }
+        [lock unlock];
+        
+        if(isRepeatingTasksType){
+            continue;
+        }
+        
+        NSString * uploadDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_photo_upload_default_path)];
+        if(!uploadDefaultPath || uploadDefaultPath.length == 0){
+            [HWDataManager setStringWithKey:stringKeyAddSn(Const_photo_upload_default_path) value:Const_default_upload_path];
+            uploadDefaultPath = Const_default_upload_path;
+        }
+        
+        //判断最后一个是否是/
+        NSString *lastStr= [uploadDefaultPath substringFromIndex:uploadDefaultPath.length-1];
+        if(![lastStr isEqualToString:@"/"]){
+            uploadDefaultPath = [[NSString alloc] initWithFormat:@"%@/",uploadDefaultPath];
+        }
+        
+        //NSString*savePath = [[NSString alloc] initWithFormat:@"%@%@",uploadDefaultPath,filePath];
+        curModel.savePath = uploadDefaultPath;
+        
+//        curModel.imageData = model.imageData;
+//        curModel.videoData = model.videoData;
+        curModel.filename = [model.asset valueForKey:@"filename"];
+        //curModel.curUploadStateType = uploadStateWait;
+        curModel.curUploadStateType = uploadStateUploading;
+        
+        if(model.type == TZAssetModelMediaTypeVideo){
+            curModel.curUploadFileType = uploadFileTypeVideo;
+            [cachesFileManager getFileNameWithContent:curModel.videoData fileName:curModel.filename type:uploadFileTypeVideo];
+            
+            
+            //curModel.totalBytes = [model.videoData length];
+            curModel.totalBytes = model.totalBytes;
+            curModel.videoData = [NSData new];//视频文件存储到文件后内存清空
+            
+            NSString *imgName1 = [curModel.filename stringByReplacingOccurrencesOfString:@"." withString:@"_"];
+            curModel.videoFirstImageName = [[NSString alloc] initWithFormat:@"%@.png",imgName1];
+           
+            //第一帧图片
+            [[PHImageManager defaultManager] requestImageDataForAsset:curModel.asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
+                    // 直接得到最终的 NSData 数据
+                    if (imageData) {
+                        curModel.imageData = imageData;
+                        [cachesFileManager getFileNameWithContent:curModel.imageData fileName:curModel.videoFirstImageName type:uploadFileTypeImage];
+                    }
+            }];
+
+        }
+        else{
+            curModel.curUploadFileType = uploadFileTypeImage;
+            curModel.totalBytes = model.totalBytes;
+            
+            if(curModel.imageData)
+            {
+                [cachesFileManager getFileNameWithContent:curModel.imageData fileName:curModel.filename type:uploadFileTypeImage];
+            }
+            else{
+                
+            }
+           
+        }
+        
+        //保存到数据库
+        curModel.bg_tableName = nasUpLoadFile_tableName;
+        [newUploadTaskArr addObject:curModel];
+        
+    }
+    
+    KWeakSelf
+    if(newUploadTaskArr.count == 0){
+        [self getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+            complete(Arr);
+            [weakSelf handleUploadFileModelBg_idFun:Arr];
+        }];
+    }
+    else{
+        [uploadFileDataModel bg_saveOrUpdateArrayAsync:newUploadTaskArr complete:^(BOOL isSuccess) {
+            [weakSelf getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
+                complete(Arr);
+                [weakSelf handleUploadFileModelBg_idFun:Arr];
+            }];
+        }];
+    }
+}
+
+#pragma mark 处理当前的model 加上bg_id
+- (void)handleUploadFileModelBg_idFun:(NSMutableArray*)totalArr
+{
+    if(!totalArr || totalArr.count != 3){
+        return;
+    }
+    
+    _fileModelDataArr = [NSMutableArray arrayWithArray:totalArr[0]];
+    
+    [self beginUploadFileFun];
+}
+
+- (void)beginUploadFileFun
+{
+//    if(_isUploadIngType && _reUploadIngSelectIndex <= 0){
+//        return;
+//    }
+    
+    BOOL isCanUseCellular = [HWDataManager getBoolWithKey:stringKeyAddSn(Const_file_Transfe_canUse_Cellular_all)];
+    if(!isCanUseCellular){//不允许流量上传
+        //
+        if([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWWAN){
+            mainBlock(^{
+                [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileSuspendAllNotification object:nil];
+                [[iToast makeText:NSLocalizedString(@"File_Transfer_By_Cellular_tip",nil)] show];
+            });
+            return;
+        }
+        
+    }
+    
+    if(ksharedAppDelegate.DisabledFileTransferType){
+        if(ksharedAppDelegate.isImageNewFor130){
+            [[iToast makeText:NSLocalizedString(@"File_Transfer_Disable_tip",nil)] show];
+        }
+        else{
+            [[iToast makeText:NSLocalizedString(@"File_Transfer_Disable_tip2",nil)] show];
+        }
+        return;
+    }
+    
+    if(_isSuspendType)
+    {
+        return;
+    }
+    
+    _isUploadIngType = YES;
+    
+    
+    _curUploadFileDataModel.imageData = nil;
+    _curUploadFileDataModel.videoData = nil;
+    _curUploadFileDataModel = nil;
+    
+    if(_fileModelDataArr.count == 0){
+        //[self didUploadAllTaskDoneFun];
+        return;
+    }
+    
+    if(_reUploadIngSelectIndex > 0 && _reUploadIngSelectIndex < _fileModelDataArr.count){
+        _curUploadFileDataModel = _fileModelDataArr[_reUploadIngSelectIndex];
+    }
+    else
+    {
+        _curUploadFileDataModel = _fileModelDataArr.firstObject;
+    }
+    
+    //做个异常处理
+    if(_databaseArr.count == 3 && _isNewAddTaskType){
+        NSMutableArray *uploadIngArr = _databaseArr[0];
+        if(_fileModelDataArr.count != uploadIngArr.count){
+            _databaseArr[0] = [NSMutableArray arrayWithArray:_fileModelDataArr];
+        }
+    }
+    
+    if(!_curUploadFileDataModel){
+        return;
+    }
+    
+    if(_curUploadFileDataModel.curUploadFileType == uploadFileTypeImage){
+        NSString*pathStr = [cachesFileManager getFilePathWithName:_curUploadFileDataModel.filename type:_curUploadFileDataModel.curUploadFileType];
+        _curUploadFileDataModel.imageData = [NSData dataWithContentsOfFile:pathStr];
+        
+        if(_curUploadFileDataModel.imageData && _curUploadFileDataModel.imageData.length >0){
+            if(_curUploadFileDataModel.totalBytes == 0){
+                _curUploadFileDataModel.totalBytes = _curUploadFileDataModel.imageData.length;
+            }
+            
+            [self beginGotoUploadDataFun];
+            return;
+        }
+    }
+    else{
+        if([cachesFileManager checkFileIsSaveState:_curUploadFileDataModel.filename withType:uploadFileTypeVideo]){
+            [self beginGotoUploadDataFun];
+            return;
+        }
+    }
+    
+    if(!_curUploadFileDataModel.asset){
+        NSString *curLocalIdentifier = _curUploadFileDataModel.localIdentifier;
+        PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[curLocalIdentifier] options:nil];
+        PHAsset *asset = fetchResult.firstObject;
+        _curUploadFileDataModel.asset = asset;
+    }
+    
+    if(!_curUploadFileDataModel.asset){
+        //[self getDataWrongToChangeFailFun];
+        return;
+    }
+    
+    KWeakSelf
+    if(_curUploadFileDataModel.curUploadFileType == uploadFileTypeImage)
+    {
+        if(!_curUploadFileDataModel.imageData || _curUploadFileDataModel.imageData.length == 0){
+            [[PHImageManager defaultManager] requestImageDataForAsset:_curUploadFileDataModel.asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
+                    // 直接得到最终的 NSData 数据
+                    if (imageData) {
+                        self->_curUploadFileDataModel.imageData = imageData;
+                        [weakSelf  afterGetImageDataFun];
+                    }
+                    else{
+                        //[weakSelf getDataWrongToChangeFailFun];
+                    }
+            }];
+        }
+    }
+    else if(_curUploadFileDataModel.curUploadFileType == uploadFileTypeVideo){
+        
+        //第一帧图片
+        [[PHImageManager defaultManager] requestImageDataForAsset:_curUploadFileDataModel.asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
+                // 直接得到最终的 NSData 数据
+                if (imageData) {
+                    self->_curUploadFileDataModel.imageData = imageData;
+                    //[weakSelf  afterGetImageDataInVideoFun];
+                }
+        }];
+
+        //真正的视频数据
+        PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
+        options.version = PHVideoRequestOptionsVersionOriginal;
+        [[PHImageManager defaultManager] requestAVAssetForVideo:_curUploadFileDataModel.asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
+            if ([asset isKindOfClass:[AVURLAsset class]]) {
+                
+                AVURLAsset* urlAsset = (AVURLAsset*)asset;
+                
+                BOOL isSuc = [cachesFileManager copyVideoItemAtPath:[urlAsset.URL path] fileName:self->_curUploadFileDataModel.filename error:nil];
+                
+                if (isSuc) {
+                    //[weakSelf  afterGetVideoDataFun];
+                }
+                else{
+                    //[weakSelf getDataWrongToChangeFailFun];
+                }
+            }
+            else{
+                //[weakSelf getDataWrongToChangeFailFun];
+            }
+        }];
+    }
+}
+
+#pragma mark 根据 asset 获取到图片数据
+- (void)afterGetImageDataFun
+{
+    [cachesFileManager getFileNameWithContent:_curUploadFileDataModel.imageData fileName:_curUploadFileDataModel.filename type:uploadFileTypeImage];
+    
+    [self beginGotoUploadDataFun];
+}
+
+- (void)beginGotoUploadDataFun{
+    [[nasUploadManager shareInstance] beginUploadDataBy:_curUploadFileDataModel];
+}
+
+@end

+ 19 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadManager.h

@@ -0,0 +1,19 @@
+//
+//  nasUploadManager.h
+//  双子星云手机
+//
+//  Created by xd h on 2024/8/7.
+//
+
+#import <Foundation/Foundation.h>
+#import "uploadFileManager.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface nasUploadManager : NSObject
++(instancetype)shareInstance;
+
+- (void)beginUploadDataBy:(uploadFileDataModel*)dataModel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 110 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadManager.m

@@ -0,0 +1,110 @@
+//
+//  nasUploadManager.m
+//  双子星云手机
+//
+//  Created by xd h on 2024/8/7.
+//
+
+#import "nasUploadManager.h"
+#import "AFNetworkReachabilityManager.h"
+#import "AFHTTPSessionManager.h"
+
+@interface nasUploadManager ()
+@property(nonatomic,strong)AFHTTPSessionManager *uploadManager;
+@end
+
+@implementation nasUploadManager
++ (instancetype)shareInstance {
+    static nasUploadManager *_instance;
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        _instance = [[self alloc] init];
+    });
+    return _instance;
+}
+
+- (id)init
+{
+    self = [super init];
+    if (self) {
+        [self initManager];
+    }
+    return self;
+}
+
+- (void)initManager
+{
+    _uploadManager = [[AFHTTPSessionManager alloc] init];
+    _uploadManager.requestSerializer = [AFJSONRequestSerializer serializer];
+    _uploadManager.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [_uploadManager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
+    _uploadManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/javascript",@"text/html",@"text/plain",nil];
+    _uploadManager.requestSerializer.timeoutInterval = 180;
+    
+}
+
+- (void)nasUploadFileToFileServiceWithParams:(NSMutableDictionary *)params data:(NSData *)data success:(netWork_Success)success faild:(netWork_Faild)faildStr {
+    
+    NSString *urlString = ksharedAppDelegate.NASFileByBoxService;
+    urlString = [[NSString alloc] initWithFormat:@"%@uploadFile",urlString];
+    HLog(@"上传地址:%@---%@",urlString,params)
+    
+    [_uploadManager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
+        
+        NSString *mimeType =@"application/octet-stream";
+        if ([[params allKeys] containsObject:@"imageType"]) {
+            mimeType = @"jpg";
+        }
+        [formData appendPartWithFileData:data name:@"file" fileName:params[@"filename"] mimeType:mimeType];
+        
+    } progress:^(NSProgress * _Nonnull uploadProgress) {
+        HLog(@"上传 Progress:--%@",uploadProgress)
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        success(responseObject);
+        
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error, id  _Nonnull responseObject) {
+        
+        faildStr(error);
+    }];
+}
+
+- (void)beginUploadDataBy:(uploadFileDataModel*)dataModel
+{
+    NSMutableDictionary *paraDict = [NSMutableDictionary new];
+    NSString* taskUid = [iTools getTaskUidStr];
+    [paraDict setObject:taskUid forKey:@"taskId"];
+    [paraDict setObject:@0 forKey:@"position"];
+    [paraDict setObject:@1 forKey:@"isLast"];
+    if(dataModel.savePath){
+        [paraDict setObject:dataModel.savePath forKey:@"savePath"];
+    }
+    else{
+        HLog(@"获取保存路径失败")
+        return;
+    }
+    
+    if(dataModel.filename){
+        [paraDict setObject:dataModel.filename forKey:@"filename"];
+    }
+    else{
+        HLog(@"获取用户名失败")
+        return;
+    }
+    
+    NSData *curData = dataModel.curUploadFileType == uploadFileTypeImage ? dataModel.imageData : dataModel.videoData;
+    
+    if(dataModel.curUploadFileType == uploadFileTypeImage){
+        [paraDict setObject:@1 forKey:@"imageType"];
+    }
+    
+    
+    [self nasUploadFileToFileServiceWithParams:paraDict data:curData success:^(id  _Nonnull responseObject) {
+        HLog(@"上传完成")
+    } faild:^(NSError * _Nonnull error) {
+        HLog(@"上传失败")
+    }];
+}
+
+@end

+ 2 - 2
创维盒子/双子星云手机/cloudPhone/websocket/webSocketManager.m

@@ -416,8 +416,8 @@ static webSocketManager *webSocketManagerInstance = nil;
     //处理相册备份
     [[backupsFileManager shareInstance] checkReBackupsFileFun];
     
-    [[uploadFileManager shareInstance] checkReUploadFileFun];
-    [[downloadManager shareInstance] checkReDownloadFileFun];
+    //[[uploadFileManager shareInstance] checkReUploadFileFun];
+    //[[downloadManager shareInstance] checkReDownloadFileFun];
     
     //[[downloadThumbnailManager shareInstance] checkReDownloadThumbnailFileFun];