NSURLSession - 사진 업로드

2496 단어
iOS10 이하에서AFNetworking이 사진을 업로드하여 메모리 유출이 발생합니다.따라서 다음과 같은 코드로 NSURLSesion을 사용하여 사진을 업로드합니다.
NSString *urlStr = [[self class] createImgUrl];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
        [request setHTTPMethod:@"POST"];
        [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
        [request setTimeoutInterval:15.f];
        //    boundary=,    
        NSString *content = [[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@", UploadImageBoundary];
        [request setValue:content forHTTPHeaderField:@"Content-Type"];
        //  token
        [request setValue:gloginManager.token forHTTPHeaderField:@"apptoken"];
        //  host
        if ([ServerConfigManager currentUsedServerType] == ServerType_CUSTOM_IP) {
            [request setValue:@"btr.m.jd.com" forHTTPHeaderField:@"host"];
        }
        
        NSMutableData *requestMutableData = [NSMutableData data];
        NSMutableString *myString = [NSMutableString stringWithFormat:@"--%@\r
", UploadImageBoundary]; [myString appendString:@"Content-Disposition: form-data; name=\"file\"; filename=\"1.jpg\"\r
"]; [myString appendString:@"Content-Type: image/jpg\r
\r
"]; /* */ [requestMutableData appendData:[myString dataUsingEncoding:NSUTF8StringEncoding]]; /* , */ [requestMutableData appendData:imageData]; /* --boundary */ [requestMutableData appendData:[[NSString stringWithFormat:@"\r
--%@--\r
", UploadImageBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; request.HTTPBody = requestMutableData; /* */ NSURLSessionDataTask *uploadtask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; DLog(@"finished===========%@", jsonStr); NSDictionary *dictionary = [LJUtils toArrayOrDictionaryFromJSONString:jsonStr]; dispatch_async(dispatch_get_main_queue(), ^{ callback(YES, dictionary, nil); }); }]; [uploadtask resume];

좋은 웹페이지 즐겨찾기