| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673 |
- //
- // GBaseNetApi.m
- // TUIContact
- //
- // Created by gan on 2025/3/24.
- //
- #import <Foundation/Foundation.h>
- #import "GBaseNetApi.h"
- #import "AFNetworking.h"
- #import "AFNetworkReachabilityManager.h"
- #import "UDManager.h"
- @implementation GBaseNetApi
- + (GBaseNetApi *_Nonnull)shareInstance{
- static id gShareInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- gShareInstance = [[self alloc] init];
- });
- return gShareInstance;
- }
- - (instancetype)init {
- if (self = [super init]) {
- _uploadTanck = [NSMutableArray new];
- _downloadTanck =[NSMutableArray new];
- }
- return self;
- }
- -(void)httpGet:(nullable id)parameters url:(NSString *)url succ:(GSucc)succ fail:(GFail)fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- NSLog(@"%@",acUrl);
- [manager GET:acUrl parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- //
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- //
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)httpPost:(nullable id)parameters url:(NSString *)url succ:(GSucc)succ fail:(GFail)fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- // NSLog(@"%@",acUrl);
- // NSLog(@"%@",parameters);
- [manager POST:acUrl parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)httpGetToken:(nullable id)parameters url:(NSString *)url succ:(GSucc)succ fail:(GFail)fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
-
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
-
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- NSLog(@"%@",acUrl);
- [manager GET:acUrl parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- dispatch_main_async_safe(^{
- if (succ) {
- succ(200,responseObject);
- }
- })
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- dispatch_main_async_safe(^{
- if (fail) {
- fail(error);
- }
- })
- }];
- }
- -(void)httpPostToken:(nullable id)parameters url:(NSString *)url succ:(GSucc)succ fail:(GFail)fail{
-
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
-
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
-
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- NSLog(@"%@",acUrl);
- NSLog(@"%@",parameters);
- [manager POST:acUrl parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)httpPutToken:(nullable id)parameters url:(NSString *_Nullable)url succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
-
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
-
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- // NSLog(@"%@",acUrl);
- // NSLog(@"%@",parameters);
- //
- [manager PUT:acUrl parameters:parameters headers:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)httpPatchToken:(nullable id)parameters url:(NSString *_Nullable)url succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
-
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
-
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- NSLog(@"%@",acUrl);
- NSLog(@"%@",parameters);
-
- [manager PATCH:acUrl parameters:parameters headers:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)httpDelToken:(nullable id)parameters url:(NSString *_Nullable)url succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
-
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
-
- NSString *acUrl=@"";
- if([url containsString:@"http"]){
- acUrl =url;
- }
- else{
- acUrl=[NSString stringWithFormat:@"%@%@",host,url];
- }
- NSLog(@"%@",acUrl);
- NSLog(@"%@",parameters);
- [manager DELETE:acUrl parameters:parameters headers:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- if (succ) {
- succ(200,responseObject);
- }
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- if (fail) {
- fail(error);
- }
- }];
- }
- -(void)upLoadWToken:(NSURL *_Nonnull)filePath succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
-
- NSData *fileData = [NSData dataWithContentsOfURL:filePath];
- NSLog(@"fileData:%lu",(unsigned long)fileData.length);
- NSLog(@"filePath.lastPathComponent:%@",filePath.lastPathComponent);
-
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 确保服务器返回的是原始数据,而非自动解析为JSON等
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
- //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
-
- NSString *acUrl=[NSString stringWithFormat:@"%@%@",filehost,@"/common/upload"];
-
- // 上传文件,使用multipart/form-data类型(通常用于文件上传)
- [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 参数名称,服务器用来识别是哪个文件被上传
- [formData appendPartWithFileData:fileData name:@"file" fileName:filePath.lastPathComponent mimeType:@"multipart/form-data"];
- } progress:^(NSProgress * _Nonnull uploadProgress) {
- // 上传进度处理
- NSLog(@"Percent Done: %lld %@", 100 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount, @" %");
- } success:^(NSURLSessionTask * _Nonnull task, id _Nullable responseObject) {
- // 上传成功处理
-
- NSString *str =[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- NSLog(@"Success: %@", str);
- NSMutableDictionary *jsonDict = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil]];
- [jsonDict jk_setObj:[self calculateFileSizeFromData:fileData] forKey:@"size"];
- NSLog(@"jsonDict:%@",jsonDict);
- if (succ) {
- succ(200,jsonDict);
- }
- } failure:^(NSURLSessionTask * _Nullable task, NSError * _Nonnull error) {
- // 上传失败处理
- if (fail) {
- fail(error);
- }
- NSLog(@"Error: %@", error);
- }];
- }
- - (void)uploadWithFilePath:(NSURL * )filePath thrid:(NSString *_Nullable)thrid progress:(FUploadProgress _Nullable)progress succ:(FSucc _Nullable )succ fail:(FFail _Nullable )fail{
- NSData *fileData = [NSData dataWithContentsOfURL:filePath];
-
- if (!fileData) {
- NSLog(@"----------读不到文件---------");
- return;
- }
-
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 确保服务器返回的是原始数据,而非自动解析为JSON等
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
- //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
-
- NSString *acUrl=[NSString stringWithFormat:@"%@%@",filehost,@"/common/upload"];
- NSLog(@"acUrl:%@",acUrl);
- NSURLSessionDataTask *uploadTack;
- // 上传文件,使用multipart/form-data类型(通常用于文件上传)
- uploadTack = [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 参数名称,服务器用来识别是哪个文件被上传
- [formData appendPartWithFileData:fileData name:@"file" fileName:filePath.lastPathComponent mimeType:@"multipart/form-data"];
- } progress:^(NSProgress * _Nonnull uploadProgress) {
- // 上传进度处理
- NSLog(@"Percent Done: %lld %@", 100 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount, @" %");
- // if (progress) {
- // progress(uploadProgress);
- // }
- progress(thrid,uploadProgress);
- } success:^(NSURLSessionTask * _Nonnull task, id _Nullable responseObject) {
- // 上传成功处理
- [self removeUploadTanckobj:thrid];
- NSString *str =[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- NSLog(@"Success: %@", str);
- NSMutableDictionary *jsonDict = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil]];
- [jsonDict jk_setObj:[self calculateFileSizeFromData:fileData] forKey:@"size"];
- // NSLog(@"jsonDict:%@",jsonDict);
- if (succ) {
- succ(200,thrid,jsonDict);
- }
- } failure:^(NSURLSessionTask * _Nullable task, NSError * _Nonnull error) {
- // 上传失败处理
- [self removeUploadTanckobj:thrid];
- if (fail) {
- fail(thrid,error);
- }
- NSLog(@"Error: %@", error);
- }];
-
- uploadTack.priority = NSURLSessionTaskPriorityLow;
- [self addUploadTanckobj:uploadTack thrid:thrid];
- }
- //OSS返回上传进度的上传方法
- - (void)uploadWithFilePathOSS:(NSURL *_Nullable)filePath thrid:(NSString *_Nullable)thrid progress:(FUploadProgress _Nullable )progress succ:(FSucc _Nullable )succ fail:(FFail _Nullable )fail{
-
-
- if([self isuploadTanck:thrid]){
- NSLog(@"---------isuploadTanck:%@",filePath);
- return;
- }
-
- NSData *fileData = [NSData dataWithContentsOfURL:filePath];
-
- if (!fileData) {
- [MBProgressHUD showWithText:@"獲取本地檔案失敗,請重新選擇檔案"];
- return;
- }
-
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 确保服务器返回的是原始数据,而非自动解析为JSON等
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
- //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
-
- NSString *acUrl=OSSfilehost;
- NSLog(@"acUrl:%@",acUrl);
- NSURLSessionDataTask *uploadTack;
- // 上传文件,使用multipart/form-data类型(通常用于文件上传)
- uploadTack = [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 参数名称,服务器用来识别是哪个文件被上传
- [formData appendPartWithFileData:fileData name:@"file" fileName:filePath.lastPathComponent mimeType:@"multipart/form-data"];
- } progress:^(NSProgress * _Nonnull uploadProgress) {
- // 上传进度处理
- NSLog(@"Percent Done: %lld %@", 100 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount, @" %");
- if (progress) {
- progress(thrid,uploadProgress);
- }
-
- } success:^(NSURLSessionTask * _Nonnull task, id _Nullable responseObject) {
- // 上传成功处理
- [self removeUploadTanckobj:thrid];
- NSString *str =[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- NSLog(@"Success: %@", str);
- NSMutableDictionary *jsonDict = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil]];
- [jsonDict jk_setObj:[self calculateFileSizeFromData:fileData] forKey:@"size"];
- // NSLog(@"jsonDict:%@",jsonDict);
- if (succ) {
- succ(200,thrid,jsonDict);
- }
- } failure:^(NSURLSessionTask * _Nullable task, NSError * _Nonnull error) {
- // 上传失败处理
- [self removeUploadTanckobj:thrid];
- if (fail) {
- fail(thrid,error);
- }
- NSLog(@"Error: %@", error);
- }];
-
- uploadTack.priority = NSURLSessionTaskPriorityLow;
- [self addUploadTanckobj:uploadTack thrid:thrid];
- }
- -(void)upLoaddataWToken:(NSData *_Nonnull)data fileName:(NSString *_Nullable)fileName succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
-
-
- NSLog(@"fileData:%lu",(unsigned long)data.length);
-
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 确保服务器返回的是原始数据,而非自动解析为JSON等
- NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
- [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"];
- //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
-
- NSString *acUrl=[NSString stringWithFormat:@"%@%@",filehost,@"/common/upload"];
-
- // 上传文件,使用multipart/form-data类型(通常用于文件上传)
- [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 参数名称,服务器用来识别是哪个文件被上传
- [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"multipart/form-data"];
- } progress:^(NSProgress * _Nonnull uploadProgress) {
- // 上传进度处理
- NSLog(@"Percent Done: %lld %@", 100 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount, @" %");
- } success:^(NSURLSessionTask * _Nonnull task, id _Nullable responseObject) {
- // 上传成功处理
-
- NSString *str =[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- NSLog(@"Success: %@", str);
- NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
- NSLog(@"jsonDict:%@",jsonDict);
- if (succ) {
- succ(200,jsonDict);
- }
- } failure:^(NSURLSessionTask * _Nullable task, NSError * _Nonnull error) {
- // 上传失败处理
- if (fail) {
- fail(error);
- }
- NSLog(@"Error: %@", error);
- }];
- }
- - (void)uploadWithFilePath:(NSArray <NSURL *>*)filePaths thrid:(NSString *_Nullable)thrid succ:(FSucc _Nullable )succ fail:(FFail _Nullable )fail{
- // 1. 创建AFHTTPSessionManager实例
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.requestSerializer = [AFHTTPRequestSerializer serializer];
- manager.responseSerializer = [AFJSONResponseSerializer serializer];
-
- NSString *acUrl=[NSString stringWithFormat:@"%@%@",filehost,@"/common/uploads"];
-
- // 2. 创建NSMutableURLRequest
- NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST"
- URLString:acUrl
- parameters:nil
- constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
-
- // 3. 遍历所有文件URL并添加到formData
- for (NSURL *fileURL in filePaths) {
- NSError *error;
- NSString *fileName = [fileURL lastPathComponent];
- NSString *mimeType = [self mimeTypeForFileAtURL:fileURL];
-
- [formData appendPartWithFileURL:fileURL
- name:@"file" // 根据服务器API调整name字段
- fileName:fileName
- mimeType:mimeType
- error:&error];
-
- if (error) {
- NSLog(@"Error appending file: %@", error.localizedDescription);
- }
- }
- } error:nil];
-
- // 4. 创建上传任务
- NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request
- progress:nil
- completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
- if (error) {
- if (fail) {
- fail(thrid,error);
- }
- } else {
- NSDictionary * responseDict = (NSDictionary *)responseObject;
- NSLog(@"批量上传返回数据:%@",responseObject);
- NSLog(@"批量上传返回msg:%@",responseDict[@"msg"]);
- }
- }];
-
- // 5. 开始上传任务
- [uploadTask resume];
- }
- // 根据文件扩展名获取MIME类型
- - (NSString *)mimeTypeForFileAtURL:(NSURL *)fileURL {
- NSString *extension = [[fileURL pathExtension] lowercaseString];
-
- if ([extension isEqualToString:@"jpg"] || [extension isEqualToString:@"jpeg"]) {
- return @"image/jpeg";
- } else if ([extension isEqualToString:@"png"]) {
- return @"image/png";
- } else if ([extension isEqualToString:@"gif"]) {
- return @"image/gif";
- } else if ([extension isEqualToString:@"pdf"]) {
- return @"application/pdf";
- } else if ([extension isEqualToString:@"doc"]) {
- return @"application/msword";
- } else if ([extension isEqualToString:@"docx"]) {
- return @"application/vnd.openxmlformats-officedocument.wordprocessingml.document";
- } else if ([extension isEqualToString:@"xls"]) {
- return @"application/vnd.ms-excel";
- } else if ([extension isEqualToString:@"xlsx"]) {
- return @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
- } else if ([extension isEqualToString:@"ppt"]) {
- return @"application/vnd.ms-powerpoint";
- } else if ([extension isEqualToString:@"pptx"]) {
- return @"application/vnd.openxmlformats-officedocument.presentationml.presentation";
- } else if ([extension isEqualToString:@"txt"]) {
- return @"text/plain";
- } else if ([extension isEqualToString:@"mp4"]) {
- return @"video/mp4";
- } else if ([extension isEqualToString:@"mov"]) {
- return @"video/quicktime";
- } else {
- return @"application/octet-stream";
- }
- }
- -(void)downLoadFileWToken:(NSURL *_Nonnull)url thrid:(NSString *_Nullable)thrid succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
-
- if([self isDownloadTanck:thrid]){
-
- return;
- }
-
- NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
- AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- NSURLSessionTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
- // NSLog(@"%lld:%lld",downloadProgress.completedUnitCount,downloadProgress.totalUnitCount);
- CGFloat progres = downloadProgress.completedUnitCount/(double)downloadProgress.totalUnitCount;
- // NSLog(@"1111:%f",progres);
- if(succ){
- // NSLog(@"222222:%f",progres);
- CGFloat Pcode =progres*100;
- // NSLog(@"222222:%d",(int)Pcode);
- succ(Pcode,nil);
- }
- } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
- NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
- NSString *fileName = [response suggestedFilename];
- NSString *fileExtension = [fileName pathExtension];
- NSString *newfileName = [NSString stringWithFormat:@"%@.%@", thrid,fileExtension];
- documentsDirectoryURL = [documentsDirectoryURL URLByAppendingPathComponent:newfileName];
- return documentsDirectoryURL;
- } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
- // NSLog(@"333:%@",filePath);
- [self removeDownloadTanckobj:thrid];
- if(error){//失败
- if(fail){
- fail(error);
- }
- }
- else{//成功
- if(succ){
- NSMutableString *mutableString = [NSMutableString stringWithString:filePath.absoluteString];
- // 删除所有 "file://" 字符
- [mutableString replaceOccurrencesOfString:@"file://" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [mutableString length])];
- NSString *strp = [NSString stringWithString:mutableString];
- NSDictionary *dic = @{
- @"filePath":strp
- };
- succ(200,dic);
- }
- }
- }];
- task.priority = NSURLSessionTaskPriorityLow;
- [self addDownloadTanckobj:task thrid:thrid];
- [task resume];
- }
- - (NSString *)calculateFileSizeFromData:(NSData *)data {
- if (!data) {
- return @"0 B";
- }
- long long bytes = (long long)data.length;
- if (bytes < 1024) {
- return [NSString stringWithFormat:@"%lld B", bytes];
- } else if (bytes < 1024 * 1024) {
- float sizeInKB = (float)bytes / 1024;
- return [NSString stringWithFormat:@"%.2f KB", sizeInKB];
- } else if (bytes < 1024 * 1024 * 1024) {
- float sizeInMB = (float)bytes / (1024 * 1024);
- return [NSString stringWithFormat:@"%.2f MB", sizeInMB];
- } else {
- float sizeInGB = (float)bytes / (1024 * 1024 * 1024);
- return [NSString stringWithFormat:@"%.2f GB", sizeInGB];
- }
- }
- -(void)addUploadTanckobj:(NSURLSessionDataTask *)task thrid:(NSString *)thrid{
- NSDictionary *item = @{
- @"task":task,
- @"thrid":thrid
- };
- [_uploadTanck addObject:item];
- }
- -(BOOL)isuploadTanck:(NSString *)thrid{
- NSLog(@"stopUploadTanck-------------2");
- if(_uploadTanck.count>0){
- for (NSDictionary *item in _uploadTanck) {
- NSString *th = item[@"thrid"];
- NSLog(@"stopUploadTanck-------------3");
- if([th isEqualToString:thrid]){
- NSLog(@"stopUploadTanck-------------4");
- return true;
- }
- }
- }
- return false;
- }
- -(void)removeUploadTanckobj:(NSString *)thrid{
- if(_uploadTanck.count>0){
- for (NSDictionary *item in _uploadTanck) {
- NSString *th = item[@"thrid"];
- if([th isEqualToString:thrid]){
- [_uploadTanck removeObject:item];
- return;
- }
- }
- }
- }
- -(void)stopUploadTanck:(NSString *)thrid{
- NSLog(@"stopUploadTanck-------------2");
- if(_uploadTanck.count>0){
- for (NSDictionary *item in _uploadTanck) {
- NSString *th = item[@"thrid"];
- NSLog(@"stopUploadTanck-------------3");
- if([th isEqualToString:thrid]){
- NSURLSessionDataTask *task = item[@"task"];
- NSLog(@"stopUploadTanck-------------4");
- [task cancel];
- NSLog(@"stopUploadTanck-------------5");
- return;
- }
- }
- }
- }
- -(void)addDownloadTanckobj:(NSURLSessionTask *)task thrid:(NSString *)thrid{
- NSDictionary *item = @{
- @"task":task,
- @"thrid":thrid
- };
- [_downloadTanck addObject:item];
- }
- -(void)removeDownloadTanckobj:(NSString *)thrid{
- if(_downloadTanck.count>0){
- for (NSDictionary *item in _downloadTanck) {
- NSString *th = item[@"thrid"];
- if([th isEqualToString:thrid]){
- [_downloadTanck removeObject:item];
- return;
- }
- }
- }
- }
- -(BOOL)isDownloadTanck:(NSString *)thrid{
- NSLog(@"stopUploadTanck-------------2");
- if(_downloadTanck.count>0){
- for (NSDictionary *item in _downloadTanck) {
- NSString *th = item[@"thrid"];
- NSLog(@"stopUploadTanck-------------3");
- if([th isEqualToString:thrid]){
- NSLog(@"stopUploadTanck-------------4");
- return true;
- }
- }
- }
- return false;
- }
- @end
|