|
@@ -31,24 +31,14 @@
|
|
|
{
|
|
|
uploadFileDataModel *uploadFileDataMod = [notification object];
|
|
|
HLog(@"%@",uploadFileDataMod);
|
|
|
+ self.curUploadFileDataMod = uploadFileDataMod;
|
|
|
|
|
|
if(![uploadFileDataMod isKindOfClass:[uploadFileDataMod class]]){
|
|
|
HLog(@"上传的文件类型不对");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if(!self.taskUid){
|
|
|
- self.taskUid = [iTools getTaskUidStr];
|
|
|
- self.fileName = uploadFileDataMod.filename;
|
|
|
- self.AllFileData = uploadFileDataMod.imageData;
|
|
|
- self.indexOfUploadFlie = 0;
|
|
|
-
|
|
|
- HLog(@"%@ %@",self.taskUid,self.fileName);
|
|
|
- self.cutFileDataArr = [self fileCutPartsBy:self.AllFileData];
|
|
|
- }
|
|
|
-
|
|
|
- NSString * commandStr = [RCCommandHelp applyForUploadFileBy:self.taskUid filePath:self.fileName];
|
|
|
- [self.commandChannelManager rc_sendData:commandStr];
|
|
|
+ [self ApplyUploadFileFun];
|
|
|
}
|
|
|
|
|
|
- (void)applyUploadFileServiceResponseFun:(NSDictionary *)dataDict
|
|
@@ -64,9 +54,8 @@
|
|
|
}
|
|
|
|
|
|
if ([status isEqualToString:@"1"]) {
|
|
|
- mainBlock(^{
|
|
|
- // 申请失败;
|
|
|
- });
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
+
|
|
|
}else if ([status isEqualToString:@"0"]){
|
|
|
if ([[data allKeys] containsObject:@"taskUid"]) {
|
|
|
NSString *taskUid = data[@"taskUid"];
|
|
@@ -75,9 +64,26 @@
|
|
|
}
|
|
|
|
|
|
if(taskUid && [taskUid isEqualToString:self.taskUid]){
|
|
|
- [[uploadFileManager shareInstance] changeUploadFileState:uploadStateUploading complete:^(BOOL isSuccess) {
|
|
|
+
|
|
|
+ NSNumber * fileLengthNum = @0;
|
|
|
+ if ([[data allKeys] containsObject:@"fileLength"])
|
|
|
+ {
|
|
|
+ fileLengthNum = data[@"fileLength"];
|
|
|
+ }
|
|
|
+
|
|
|
+ [[uploadFileManager shareInstance] changeUploadFileState:uploadStateUploading withDidUploadBytes:[fileLengthNum integerValue] complete:^(BOOL isSuccess) {
|
|
|
|
|
|
}];
|
|
|
+
|
|
|
+ self.cutFileDataArr = [self fileCutPartsBy:self.AllFileData withDidUpLoadSize:[fileLengthNum integerValue]];
|
|
|
+
|
|
|
+ if(self.cutFileDataArr.count == 0){
|
|
|
+ [[uploadFileManager shareInstance] changeUploadFileState:uploadStateFail withDidUploadBytes:[fileLengthNum integerValue] complete:^(BOOL isSuccess) {
|
|
|
+
|
|
|
+ }];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
//答复的taskUid 跟申请的一致 开发发送内容
|
|
|
[self upLoadFileFun];
|
|
|
}
|
|
@@ -88,21 +94,83 @@
|
|
|
}
|
|
|
else{
|
|
|
//异常
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
//异常
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- (void)upLoadFileFunServiceResponseFun:(NSDictionary *)dataDict
|
|
|
{
|
|
|
+ //{"type":"uploadFileRandomRet","data":{"progress":"9\/10","filePath":"/sdcard/Download/IMG_0036.JPG","status":"0","msg":"success"}}
|
|
|
|
|
|
- if(self.indexOfUploadFlie == self.cutFileDataArr.count -1){
|
|
|
- HLog(@"111");
|
|
|
+ if([dataDict isKindOfClass:[NSDictionary class]]){
|
|
|
+ if ([[dataDict allKeys] containsObject:@"data"]) {
|
|
|
+ NSDictionary *data = dataDict[@"data"];
|
|
|
+
|
|
|
+ if ([[data allKeys] containsObject:@"status"]) {
|
|
|
+ NSString *status = [data objectForKey:@"status"];
|
|
|
+ if(![status isKindOfClass:[NSString class]]){
|
|
|
+ status = [[NSString alloc] initWithFormat:@"%@",status];
|
|
|
+ }
|
|
|
+
|
|
|
+ if ([status isEqualToString:@"1"]) {
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
+ }else if ([status isEqualToString:@"0"]){
|
|
|
+ [self handleUploadingFun];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //异常
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //异常
|
|
|
+ [self tryAgainApplyUploadFun];
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 申请上传文件
|
|
|
+- (void)ApplyUploadFileFun
|
|
|
+{
|
|
|
+ if(!self.taskUid){
|
|
|
+ self.taskUid = [iTools getTaskUidStr];
|
|
|
+ self.fileName = self.curUploadFileDataMod.filename;
|
|
|
+ self.AllFileData = self.curUploadFileDataMod.imageData;
|
|
|
+ self.indexOfUploadFlie = 0;
|
|
|
+
|
|
|
+ HLog(@"%@ %@",self.taskUid,self.fileName);
|
|
|
+ //self.cutFileDataArr = [self fileCutPartsBy:self.AllFileData];
|
|
|
}
|
|
|
|
|
|
- if (self.indexOfUploadFlie < self.cutFileDataArr.count -1) {
|
|
|
+ NSString * commandStr = [RCCommandHelp applyForUploadFileBy:self.taskUid filePath:self.fileName];
|
|
|
+ [self.commandChannelManager rc_sendData:commandStr];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 遇到异常时 重新上传
|
|
|
+- (void)tryAgainApplyUploadFun
|
|
|
+{
|
|
|
+ self.taskUid = nil;
|
|
|
+ [self ApplyUploadFileFun];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 处理上传过程
|
|
|
+- (void)handleUploadingFun
|
|
|
+{
|
|
|
+ if(self.indexOfUploadFlie < self.cutFileDataArr.count -1) {
|
|
|
+
|
|
|
+ NSInteger didUploadSize = (self.indexOfUploadFlie+1) * (8*1024);
|
|
|
+
|
|
|
+ [[uploadFileManager shareInstance] changeUploadFileState:uploadStateUploading withDidUploadBytes:didUploadSize complete:^(BOOL isSuccess) {
|
|
|
+
|
|
|
+ }];
|
|
|
+
|
|
|
self.indexOfUploadFlie ++;
|
|
|
[self upLoadFileFun];
|
|
|
}
|
|
@@ -119,6 +187,7 @@
|
|
|
[[uploadFileManager shareInstance] uploadFileDoneFun];
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//- (int)getBCC:(NSData*)data
|
|
|
//{
|
|
|
// int bcc = 0;
|
|
@@ -153,7 +222,7 @@
|
|
|
|
|
|
|
|
|
#pragma mark 文件切片
|
|
|
--(NSMutableArray *)fileCutPartsBy:(NSData*)curData{
|
|
|
+-(NSMutableArray *)fileCutPartsBy:(NSData*)curData withDidUpLoadSize:(NSInteger)didLoadSize{
|
|
|
|
|
|
NSData * data = curData;
|
|
|
|
|
@@ -162,6 +231,13 @@
|
|
|
NSUInteger subs = 8*1024;//4096;//要切片的大小,我这里设置的是4096字节
|
|
|
|
|
|
NSInteger index = 0;//起始位置
|
|
|
+
|
|
|
+ if(didLoadSize != 0){
|
|
|
+ if (didLoadSize % subs != 0){
|
|
|
+ //出错了
|
|
|
+ return [NSMutableArray new];
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
NSMutableArray *dataArray =[NSMutableArray new];
|
|
|
|