123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //
- // CWUploadTask+CheckInfo.m
- // uploadFileDemo
- //
- // Created by hyjet on 2018/3/9.
- // Copyright © 2018年 uploadFileDemo. All rights reserved.
- //
- #import "CWUploadTask+CheckInfo.h"
- #import "CWFileStreamSeparation.h"
- #define CURRENT_API @""
- #define GETPOSTFLOWCHUNKAPI @"/nextcloud/index.php/apps/rcapi/ajax/upload.php"/*断点续传*/
- @implementation CWUploadTask (CheckInfo)
- - (void)checkParamFromServer:(CWFileStreamSeparation *_Nonnull)fileStream paramCallback:(void(^ _Nullable)(NSString *_Nonnull chunkNumName,NSDictionary *_Nullable param))paramBlock
- {
-
- HLog(@"del 2024525 暂未做");
- /* hxd del 2024525 暂未做
- HLog(@"GET之前——--文件名:%@ 已上传完进度:%.2f 上传状态:%ld", fileStream.fileName, fileStream.progressRate, fileStream.fileStatus);
- // HLog(@"IP地址:%@", [iPhone phoneDeviceIPAddress]);
- /// 请求URL
- NSDictionary *dictLogin = [[UseAccountManage shareInstance] getLoginInfo];
- NSString *mCloudService = @"";
- if (dictLogin && [[dictLogin allKeys] containsObject:@"nextCloudIp"])
- {
- mCloudService = [NSString stringWithFormat:@"http://%@",[dictLogin objectForKey:@"nextCloudIp"]];
- }
- else
- {
- return;
- }
- NSString *urlString = [mCloudService stringByAppendingString:GETPOSTFLOWCHUNKAPI];
- for (NSInteger i=0; i<fileStream.streamFragments.count; i++) {
- CWStreamFragment *fragment = fileStream.streamFragments[i];
- if (fragment.fragmentStatus) { // 已上传
- continue;
- }else { // 未上传
- NSString *flowFilename = fileStream.fileName;
- NSString *flowFilenameWithoutPoint = [flowFilename stringByReplacingOccurrencesOfString:@"." withString:@""];
- NSString *flowIdentifier = [NSString stringWithFormat:@"%ld-%@", fileStream.fileSize, flowFilenameWithoutPoint];
- NSString *flowRelativePath = @"";
- if ([fileStream.uploadLocation isEqualToString:@"/"]) {
- flowRelativePath = [NSString stringWithFormat:@"%@", flowFilename];
- }else {
- flowRelativePath = [NSString stringWithFormat:@"%@/%@", fileStream.uploadLocation, flowFilename];
- }
- /// 请求参数paramsDict
- NSMutableDictionary *paramsDict = [[NSMutableDictionary alloc] init];
- [paramsDict setValue:@(i+1) forKey:@"flowChunkNumber"]; // 当前第几块
- [paramsDict setValue:@(CWStreamFragmentMaxSize) forKey:@"flowChunkSize"]; // 块定义上传大小
- [paramsDict setValue:@(fragment.fragmentSize) forKey:@"flowCurrentChunkSize"]; // 当前块大小
- [paramsDict setValue:@(fileStream.fileSize) forKey:@"flowTotalSize"]; // 总大小
- [paramsDict setValue:flowIdentifier forKey:@"flowIdentifier"]; // 标识符【规则:总大小-文件名+文件后缀】
- [paramsDict setValue:flowFilename forKey:@"flowFilename"]; // 文件名
- [paramsDict setValue:flowRelativePath forKey:@"flowRelativePath"]; // 文件存储路径
- [paramsDict setValue:@(fileStream.streamFragments.count) forKey:@"flowTotalChunks"]; // 块总数
- // NSString *args = [iTools getJSONStringFromDictionary:paramsDict];
- // HLog(@"GET——URL:%@---params:%@", urlString,paramsDict);
- /// 拼接参数
- NSString *requestURLString = [NSString stringWithFormat:@"%@?flowChunkNumber=%ld&flowChunkSize=%d&flowCurrentChunkSize=%ld&flowTotalSize=%ld&flowIdentifier=%@&flowFilename=%@&flowRelativePath=%@&flowTotalChunks=%ld", urlString, (i+1), CWStreamFragmentMaxSize, fragment.fragmentSize, fileStream.fileSize, flowIdentifier, flowFilename, flowRelativePath, fileStream.streamFragments.count];
- NSString *requestURLEncodedString = [requestURLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // URL中不能有中文
- /// 创建请求 设置请求头Authorization
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURLEncodedString]];
- NSString *tokenStr = @"";
- if (dictLogin && [[dictLogin allKeys] containsObject:@"token"]) {
- tokenStr = [[UseAccountManage shareInstance] cloudAutoh];
- if (tokenStr.length == 0) {
- HLog(@"POST:未能成功获取到Authorization");
- return;
- }
- }else {
- HLog(@"POST:未能成功获取到Authorization");
- return;
- }
- [request setValue:tokenStr forHTTPHeaderField:@"Authorization"];
- [request setValue:fileStream.md5String forHTTPHeaderField:@"onlycrypt"]; // 文件MD5值
- request.HTTPMethod = @"GET";// 设置请求类型 先GET查询 再POST上传
- NSURLSession *session = [NSURLSession sharedSession];
-
- //发送请求
- NSURLSessionDataTask *postTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
- if (error == nil) {
- //解析得到的数据
- NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
- HLog(@"GET之后:获取断点续传分片信息成功 校验参数 更新paramsDict 返回:%@", dict);
- paramBlock(@"flowChunkNumber",paramsDict);
- }else {
- HLog(@"GET之后:获取断点续传分片信息失败 %@", error);
- }
-
- [self clearCookies];
- }];
-
- [postTask resume];
-
-
- break;
-
- }
- }
- */
- }
- // 清空Cookie
- - (void)clearCookies {
-
- NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
- NSArray *cookieArray = [NSArray arrayWithArray:[cookieJar cookies]];
- for(id obj in cookieArray)
- {
- [cookieJar deleteCookie:obj];
- }
- }
- @end
|