From cb78c70af7cdb6a794bee92e1a25afe8ea72be28 Mon Sep 17 00:00:00 2001 From: Ryeagle Date: Mon, 21 Mar 2016 20:25:55 +0800 Subject: [PATCH 1/3] test complete --- T8NetworkKitDemo/.DS_Store | Bin 8196 -> 10244 bytes .../T8NetWorkKit/T8NetworkBaseService.h | 9 ++- .../T8NetWorkKit/T8NetworkBaseService.m | 33 ++++---- .../project.pbxproj | 4 + .../Assets.xcassets/.DS_Store | Bin 0 -> 6148 bytes .../T8NetworkKitDemo/DemoService.h | 1 + .../T8NetworkKitDemo/DemoService.m | 23 +++++- .../T8NetworkKitDemo/ViewController.m | 72 +++++++++++++++--- T8NetworkKitDemo/T8NetworkKitDemo/abc.jpg | Bin 0 -> 36366 bytes 9 files changed, 112 insertions(+), 30 deletions(-) create mode 100644 T8NetworkKitDemo/T8NetworkKitDemo/Assets.xcassets/.DS_Store create mode 100644 T8NetworkKitDemo/T8NetworkKitDemo/abc.jpg diff --git a/T8NetworkKitDemo/.DS_Store b/T8NetworkKitDemo/.DS_Store index caec3538d78a5752611cf9f1f1530fb244e24472..a6caf13ff04a50a241f67ec43eb9f9d86f1975f1 100644 GIT binary patch literal 10244 zcmeHMYitx%6h5aE*=0(ZmR4YC(}hM#q|t3kc^P48w*m!W!}bLf*4dqrj?B)iGqYQ2 z(@_85Gd^NsG)BQki~;?lB5L9fgAXt!D#8!tmkH=EVq)SWCMKSH?<{UxN}FN~lDWy; zb06oNd*{2~nVEYB0I)TuHUWeIAV3$Bav5b;NUWb-<5G#&Qb7{Q9#ki7q%6xAr|CEN z2>1y22>1y22>1wGF9^^(o27sxq@Vi;_z3t2Tt8Q%hsETv|i zs4TMr$*?D*o*WU9dMKeVB`HkN+hU+Fr}nU?7xm5 zj@w$EOyi2Fb?c6v(hc1moHKg9uT87%78Wbx|Gwpl>eXBB_P(Nxuu1zOXS~Lmr0>4UY|*o4JRKL z@lf*emEu8~6KcP!ecr}RNmWMrBW+LGGIAM{dMeV2 zk5Rc2S&}u70ns*U3!G zvf?Q&ZIGnS{S?`<<2ha4D22KVC8Zg%8Wd)cCMndD7ju`lc#SPpQm8j=Wim8r$7@@& zHWb>+hTW<-?)I!^(v(iIvDdASZlEbmbYDA}%?4Fv6AjcC;<`S%Ocd**5mAuYH%l!< zpcOh`FJxg59)oA$FuV)L;XU{mzJPOZ9xlQq_yvB2-{5xyoP%>w#tIDKQf$Cw*n}%_ zHLk(6*oK?11GnH-?84o+2lrwU`!S0)I_Tms9>Rz4VSE~o;4AnlzJ_n%JNOZPieKT^ z_zj-H^LPO-iJ6rYo=TewvlkM7COH*Cdk^@MN3Klhx{aGQR&Q>*ZVCNexu9|N&GR|0 z*Q{&3OpY;(DCQ+6qhK3nVS#0w=%c88mdL)SrdF!!BC=`+CSsC2i-kvkYcF0>S0@KJ z0h#gA2C9}&h=|_hjdhYdg9ifZC63q0Gdbm1wPhu}QcHPIuhC>)BgqJo7Bdj017GFg;Rc791 z)0+OgGS)v>U8}EAc=?-1zA%2~Bj6)&;~+3Y+)9|8|F_eJ;ROHxZ=4(U@5D#IM_?QR zSQ<;jTB*6PZ5*q?&f3Ft-9r~kOm9R;ZbBJ9jwi{FJ3g4l{% zfYMTvgcTiV1yXX OFgc!Q+U5=^Hf8`4#2DoO diff --git a/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.h b/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.h index 61f9afc..f45b0e9 100644 --- a/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.h +++ b/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.h @@ -42,15 +42,16 @@ typedef void(^RequestProgressBlock)(NSUInteger bytesWritten, long long totalByte @property (nonatomic, assign) FileModelType type; @property (nonatomic, copy) NSString *path; @property (nonatomic, strong) NSData *data; +@property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *fileName; @property (nonatomic, copy) NSString *mimeType; @end /** - * 文件模型数据 + * 文件模型数组 */ @interface T8FileModelArray : NSObject -@property (nonatomic, strong) NSArray *fileModelArray; +@property (nonatomic, strong) NSArray *fileModelArray; @end @@ -85,7 +86,7 @@ typedef void(^RequestProgressBlock)(NSUInteger bytesWritten, long long totalByte * @param progressBlock 上传进度回调方法 * @param completBlock 上传成功回调方法 */ -+ (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)strUrlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completBlock:(RequestComplete)completBlock; ++ (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)strUrlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completeBlock:(RequestComplete)completeBlock; /** * 上传一组文件 @@ -96,7 +97,7 @@ typedef void(^RequestProgressBlock)(NSUInteger bytesWritten, long long totalByte * @param progressBlock 上传进度回调方法 * @param completBlock 上传完成回调方法 */ -+ (void)uploadFiles:(T8FileModelArray *)files urlPath:(NSString *)strUrlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completBlock:(RequestComplete)completBlock; ++ (void)uploadFiles:(T8FileModelArray *)files urlPath:(NSString *)strUrlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completeBlock:(RequestComplete)completeBlock; @end diff --git a/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.m b/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.m index 96de870..c293ac3 100644 --- a/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.m +++ b/T8NetworkKitDemo/T8NetWorkKit/T8NetworkBaseService.m @@ -59,7 +59,7 @@ + (void)sendRequestUrlPath:(NSString *)strUrlPath httpMethod:(HttpMethod)httpMet [dataTask resume]; } -+ (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)urlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completBlock:(RequestComplete)completBlock ++ (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)urlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completeBlock:(RequestComplete)completeBlock { AFHTTPSessionManager *manager = [self shareHttpManager]; NSString *urlStr = [self getRequestUrl:urlPath]; @@ -67,11 +67,12 @@ + (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)urlPath params:( NSMutableURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[self getRequestUrl:urlStr] parameters:params constructingBodyWithBlock:^(id formData) { if (fileModel.type == FileModelData) { if (fileModel.data) { - [formData appendPartWithFileData:fileModel.data name:@"" fileName:@"" mimeType:fileModel.mimeType]; + [formData appendPartWithFileData:fileModel.data name:fileModel.name fileName:fileModel.fileName mimeType:fileModel.mimeType]; } }else if (fileModel.type == FileModelPath){ if (fileModel.path.length > 0) { - [formData appendPartWithFileURL:[NSURL URLWithString:fileModel.path] name:@"" fileName:@"" mimeType:fileModel.mimeType error:nil]; + [formData appendPartWithFileURL:[NSURL fileURLWithPath:fileModel.path] name:fileModel.name fileName:fileModel.fileName mimeType:fileModel.mimeType error:nil]; + NSLog(@"formData = %@", formData); } } } error:nil]; @@ -79,14 +80,16 @@ + (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)urlPath params:( if (T8RequestHeaderBlock) { T8RequestHeaderBlock(request); } - + NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) { - +// typedef void(^RequestProgressBlock)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite); + progressBlock(uploadProgress.completedUnitCount, uploadProgress.totalUnitCount, 0); } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { if (error) { - NSLog(@"Error: %@", error); + T8NetworkError *_error = [T8NetworkError errorWithNSError:error]; + completeBlock(RequestStatusFailure, nil, _error); } else { - NSLog(@"%@ %@", response, responseObject); + completeBlock(RequestStatusSuccess, responseObject, nil); } }]; [uploadTask resume]; @@ -94,22 +97,21 @@ + (void)uploadFile:(T8FileModel *)fileModel urlPath:(NSString *)urlPath params:( -+ (void)uploadFiles:(T8FileModelArray *)files urlPath:(NSString *)urlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completBlock:(RequestComplete)completBlock; ++ (void)uploadFiles:(T8FileModelArray *)files urlPath:(NSString *)urlPath params:(NSMutableDictionary *)params progressBlock:(RequestProgressBlock)progressBlock completeBlock:(RequestComplete)completeBlock; { - NSArray *fileModelArray = files.fileModelArray; - AFHTTPSessionManager *manager = [self shareHttpManager]; NSString *urlStr = [self getRequestUrl:urlPath]; + NSArray *fileModelArray = files.fileModelArray; NSMutableURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[self getRequestUrl:urlStr] parameters:params constructingBodyWithBlock:^(id formData) { for (T8FileModel *fileModel in fileModelArray) { if (fileModel.type == FileModelData) { if (fileModel.data) { - [formData appendPartWithFileData:fileModel.data name:@"" fileName:@"" mimeType:fileModel.mimeType]; + [formData appendPartWithFileData:fileModel.data name:fileModel.name fileName:fileModel.fileName mimeType:fileModel.mimeType]; } }else if (fileModel.type == FileModelPath){ if (fileModel.path.length > 0) { - [formData appendPartWithFileURL:[NSURL URLWithString:fileModel.path] name:@"" fileName:@"" mimeType:fileModel.mimeType error:nil]; + [formData appendPartWithFileURL:[NSURL fileURLWithPath:fileModel.path] name:fileModel.name fileName:fileModel.fileName mimeType:fileModel.mimeType error:nil]; } } } @@ -120,12 +122,13 @@ + (void)uploadFiles:(T8FileModelArray *)files urlPath:(NSString *)urlPath params } NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) { - + progressBlock(uploadProgress.completedUnitCount, uploadProgress.totalUnitCount, 0); } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { if (error) { - NSLog(@"Error: %@", error); + T8NetworkError *_error = [T8NetworkError errorWithNSError:error]; + completeBlock(RequestStatusFailure, nil, _error); } else { - NSLog(@"%@ %@", response, responseObject); + completeBlock(RequestStatusSuccess, responseObject, nil); } }]; [uploadTask resume]; diff --git a/T8NetworkKitDemo/T8NetworkKitDemo.xcodeproj/project.pbxproj b/T8NetworkKitDemo/T8NetworkKitDemo.xcodeproj/project.pbxproj index 1267343..9ef56fd 100644 --- a/T8NetworkKitDemo/T8NetworkKitDemo.xcodeproj/project.pbxproj +++ b/T8NetworkKitDemo/T8NetworkKitDemo.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 3FB896DB94C8572FB4C92510 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 042B099277402A303BA96B6C /* libPods.a */; }; + 75DE4EDA1CA01FBA00197A05 /* abc.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 75DE4ED91CA01FBA00197A05 /* abc.jpg */; }; 75E33AED1C9CF3C600CBD0B8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 75E33AEC1C9CF3C600CBD0B8 /* main.m */; }; 75E33AF01C9CF3C600CBD0B8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 75E33AEF1C9CF3C600CBD0B8 /* AppDelegate.m */; }; 75E33AF31C9CF3C600CBD0B8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 75E33AF21C9CF3C600CBD0B8 /* ViewController.m */; }; @@ -24,6 +25,7 @@ /* Begin PBXFileReference section */ 042B099277402A303BA96B6C /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 376022D6C7BDBC00C21502E8 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 75DE4ED91CA01FBA00197A05 /* abc.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = abc.jpg; sourceTree = ""; }; 75E33AE81C9CF3C600CBD0B8 /* T8NetworkKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = T8NetworkKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 75E33AEC1C9CF3C600CBD0B8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 75E33AEE1C9CF3C600CBD0B8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -95,6 +97,7 @@ 75E33AF71C9CF3C600CBD0B8 /* Assets.xcassets */, 75E33AF91C9CF3C600CBD0B8 /* LaunchScreen.storyboard */, 75E33AFC1C9CF3C600CBD0B8 /* Info.plist */, + 75DE4ED91CA01FBA00197A05 /* abc.jpg */, 75E33AEB1C9CF3C600CBD0B8 /* Supporting Files */, ); path = T8NetworkKitDemo; @@ -196,6 +199,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 75DE4EDA1CA01FBA00197A05 /* abc.jpg in Resources */, 75E33AFB1C9CF3C600CBD0B8 /* LaunchScreen.storyboard in Resources */, 75E33AF81C9CF3C600CBD0B8 /* Assets.xcassets in Resources */, 75E33AF61C9CF3C600CBD0B8 /* Main.storyboard in Resources */, diff --git a/T8NetworkKitDemo/T8NetworkKitDemo/Assets.xcassets/.DS_Store b/T8NetworkKitDemo/T8NetworkKitDemo/Assets.xcassets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..39c03623095c8d57e115b0043f7209c00876a20c GIT binary patch literal 6148 zcmeHK%Sr=55Ukc50(!{N<9vbO9}FRWL4LqTLJ%~9QO|qwyZkh(9|+6Fg9k5C4c#@< z(>2T1VS5{ZE#Ed*zyiRW?uZW$Q}c88iJer&h;-iZfG6Byhb<11>f;ILp5qSp*x+)+ z-{SRs{jz_2-tY4M;}<9^1*Cu!kOERb3j9g|@4dA7S)!s8kOETRTLJ$*G`eFi91`Qx z!4M+=amI8Q*D*^Fn` ztS2f;0Vyz6;54@j@Bi2IALjotNjoVZ1^$%+He0P%OTJR|*2&9xuWj@jy4QTt-M9`4 nL$qUJv}10(9bZII)-_-AycZ6ML1#YbMEwl7E;1?b*9v?AQ7sk_ literal 0 HcmV?d00001 diff --git a/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.h b/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.h index 6dff63c..3146384 100644 --- a/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.h +++ b/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.h @@ -17,4 +17,5 @@ + (void)testRequestWithGetParmas:(GetParams *)getParams block:(RequestComplete)requestComplete; + (void)testRequestWithPostParams:(PostParams *)postParams block:(RequestComplete)requestComplete; + (void)testUploads:(T8FileModel *)fileModel block:(RequestComplete)requestComplete; ++ (void)testFilesUploads:(T8FileModelArray *)fileModelArray block:(RequestComplete)requestComplete; @end diff --git a/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.m b/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.m index ae7113c..53615f2 100644 --- a/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.m +++ b/T8NetworkKitDemo/T8NetworkKitDemo/DemoService.m @@ -46,16 +46,35 @@ + (void)testRequestWithPostParams:(PostParams *)postParams block:(RequestComplet + (void)testUploads:(T8FileModel *)fileModel block:(RequestComplete)requestComplete { NSString *urlPath = @"v2/upload/picture"; +// NSString *urlPath = @"https://slack.com/api/files.upload?token=xoxp-28180523860-28139895139-28194787457-d910c3f484&filename=abc&pretty=1"; [T8NetworkBaseService uploadFile:fileModel urlPath:urlPath params:nil progressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { - - } completBlock:^(RequestStatus status, NSDictionary *data, T8NetworkError *error) { + NSLog(@"bytesWritten:%lu", (unsigned long)bytesWritten); + NSLog(@"totalBytesWritten:%lld", totalBytesWritten); + } completeBlock:^(RequestStatus status, NSDictionary *data, T8NetworkError *error) { if (requestComplete) { requestComplete(status, data, error); } }]; } ++ (void)testFilesUploads:(T8FileModelArray *)fileModelArray block:(RequestComplete)requestComplete +{ + NSString *urlPath = @"v2/upload/picture"; + // NSString *urlPath = @"https://slack.com/api/files.upload?token=xoxp-28180523860-28139895139-28194787457-d910c3f484&filename=abc&pretty=1"; + + [T8NetworkBaseService uploadFiles:fileModelArray urlPath:urlPath params:nil progressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { + NSLog(@"bytesWritten:%lu", (unsigned long)bytesWritten); + NSLog(@"totalBytesWritten:%lld", totalBytesWritten); + + } completeBlock:^(RequestStatus status, NSDictionary *data, T8NetworkError *error) { + if (requestComplete) { + requestComplete(status, data, error); + } + }]; +} + + @end diff --git a/T8NetworkKitDemo/T8NetworkKitDemo/ViewController.m b/T8NetworkKitDemo/T8NetworkKitDemo/ViewController.m index 1c49c87..52681f2 100644 --- a/T8NetworkKitDemo/T8NetworkKitDemo/ViewController.m +++ b/T8NetworkKitDemo/T8NetworkKitDemo/ViewController.m @@ -8,6 +8,7 @@ #import "ViewController.h" #import "T8NetworkBaseService.h" +#import "AFNetworking.h" #import "DemoService.h" #import "PostParams.h" #import "GetParams.h" @@ -21,8 +22,9 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - [self testGet]; - // Do any additional setup after loading the view, typically from a nib. + [self testFilesUpload]; +// [self testUpload]; + } - (void)testPost @@ -59,24 +61,76 @@ - (void)testUpload [T8NetworkBaseService setBaseUrl:@"http://api-saas-dev.tinfinite.com"]; [T8NetworkBaseService setHeaderBlock:^(NSMutableURLRequest *request) { [request setValue:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiNTZlNjdjYjc3ZTJjYzI4YTIxYjg5MzI3IiwiZGV2aWNlX2lkIjoiRTQ1RTIyQkMtQUYxMC00RTI2LUJDOUYtQUI5OEFFNzE4RDQ0IiwidHMiOjE0NTgyODgxMTc1MTMsImFwcF9pZCI6IjU2YzZjMzA5MjQzY2I3MjgyMDVhM2RmZiIsImlhdCI6MTQ1ODI4ODExN30.v4Sex80uTUVN7htZz-LoDuaqHLFmtPlzcZ5jxGHXUzI" forHTTPHeaderField:@"x-access-token"]; - [request setValue:@"ewogICJwaG9uZV9tb2RlbCIgOiAiaVBob25lIiwKICAicmVsZWFzZV9jaGFubmVsIiA6ICJhcHBfc3RvcmUiLAogICJhcHBfdmVyc2lvbiIgOiAiMTAwIiwKICAib3NfdmVyc2lvbiIgOiAiOS4yLjEiLAogICJkZXZpY2VfdG9rZW4iIDogIjZjNGI2NGQ5ZDgzYTVlNjY0ZDg3N2EwNTRhODMzZWNiMzg4MmQyOWVlYTdmZWNkZTE2YWEzMGFkMzQ3MzEzYTgiLAogICJwbGF0Zm9ybSIgOiAiaU9TIgp9" forHTTPHeaderField:@"x-device-info"]; - [request setValue:@"56c6c309243cb728205a3dff" forHTTPHeaderField:@"x-app-id"]; }]; - UIImage *image = [UIImage imageNamed:@"abc"]; + UIImage *image = [UIImage imageNamed:@"bcd"]; if (image) { NSLog(@"image not nil"); } - NSData *data = UIImageJPEGRepresentation(image, 0.3); + NSData *data = UIImageJPEGRepresentation(image, 1); T8FileModel *fileModel = [[T8FileModel alloc]init]; fileModel.data = data; - fileModel.type = FileModelPath; + fileModel.type = FileModelData; fileModel.mimeType =@"image/jpg"; - fileModel.path = @"/Users/Ryeagle/Downloads/bcd.jpg"; - + NSString *filePath = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"jpg"] ; + fileModel.path = filePath; + UIImage *image1 = [UIImage imageWithContentsOfFile:fileModel.path]; + if (image1) { + NSLog(@"image1 is not nil"); + } + fileModel.name = @"file"; + fileModel.fileName = @"abc.jpg"; + [DemoService testUploads:fileModel block:^(RequestStatus status, NSDictionary *data, T8NetworkError *error) { }]; +} +- (void)testFilesUpload +{ + [T8NetworkBaseService setBaseUrl:@"http://api-saas-dev.tinfinite.com"]; + [T8NetworkBaseService setHeaderBlock:^(NSMutableURLRequest *request) { + [request setValue:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiNTZlNjdjYjc3ZTJjYzI4YTIxYjg5MzI3IiwiZGV2aWNlX2lkIjoiRTQ1RTIyQkMtQUYxMC00RTI2LUJDOUYtQUI5OEFFNzE4RDQ0IiwidHMiOjE0NTgyODgxMTc1MTMsImFwcF9pZCI6IjU2YzZjMzA5MjQzY2I3MjgyMDVhM2RmZiIsImlhdCI6MTQ1ODI4ODExN30.v4Sex80uTUVN7htZz-LoDuaqHLFmtPlzcZ5jxGHXUzI" forHTTPHeaderField:@"x-access-token"]; + }]; + + UIImage *image = [UIImage imageNamed:@"bcd"]; + NSData *data = UIImageJPEGRepresentation(image, 0.3); + NSString *filePath = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"jpg"] ; + NSLog(@"%@", filePath); + T8FileModel *fileModel1 = [[T8FileModel alloc]init]; + T8FileModel *fileModel2 = [[T8FileModel alloc]init]; + T8FileModel *fileModel3 = [[T8FileModel alloc]init]; + + + fileModel1.data = data; + fileModel1.type = FileModelData; + fileModel1.mimeType =@"image/jpg"; + fileModel1.path = filePath; + fileModel1.name = @"file1d"; + fileModel1.fileName = @"abc.jpg"; + + fileModel2.data = data; + fileModel2.type = FileModelData; + fileModel2.mimeType =@"image/jpg"; + fileModel2.path = filePath; + fileModel2.name = @"filedd"; + fileModel2.fileName = @"bcd.jpg"; + + fileModel3.data = data; + fileModel3.type = FileModelPath; + fileModel3.mimeType =@"image/jpg"; + fileModel3.path = filePath; + fileModel3.name = @"filebb"; + fileModel3.fileName = @"cde.jpg"; + + T8FileModelArray *fileModelArray = [[T8FileModelArray alloc]init]; + fileModelArray.fileModelArray = @[fileModel1, fileModel2, fileModel3]; + + [DemoService testFilesUploads:fileModelArray block:^(RequestStatus status, NSDictionary *data, T8NetworkError *error) { + + }]; } + + + @end diff --git a/T8NetworkKitDemo/T8NetworkKitDemo/abc.jpg b/T8NetworkKitDemo/T8NetworkKitDemo/abc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ac4cf2558962caf56428d54e92b8571eb9c7e57 GIT binary patch literal 36366 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 |uW#GKVF^zbkA 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 D`l!-L literal 0 HcmV?d00001 From bfce3159528fde25cf1c4f0e07ae0f6675f69c2e Mon Sep 17 00:00:00 2001 From: Ryeagle Date: Mon, 21 Mar 2016 20:28:50 +0800 Subject: [PATCH 2/3] .. --- T8NetworkKitDemo/.DS_Store | Bin 10244 -> 10244 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/T8NetworkKitDemo/.DS_Store b/T8NetworkKitDemo/.DS_Store index a6caf13ff04a50a241f67ec43eb9f9d86f1975f1..a0eefd498613c7707380c7830a600fae763926e8 100644 GIT binary patch delta 14 VcmZn(XbIThC&d`O* Date: Mon, 21 Mar 2016 20:33:00 +0800 Subject: [PATCH 3/3] ... --- T8NetworkKitDemo/.DS_Store | Bin 10244 -> 10244 bytes T8NetworkKitDemo/Pods/.DS_Store | Bin 6148 -> 6148 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/T8NetworkKitDemo/.DS_Store b/T8NetworkKitDemo/.DS_Store index a0eefd498613c7707380c7830a600fae763926e8..5759034c5f7f43e52b4c530035208896811a800d 100644 GIT binary patch delta 80 zcmZn(XbIS$Daq!Q!@$5GHAz@uvcIGvFB8Lu&8HbH#Q<3r2c7@` delta 22 dcmZoMXffDe#mMyk=VTkkUM5C^&8HbH#Q