2014-10-16 3 views
0

ios7에서 여러 이미지를 업로드했습니다. 하지만 그것은 ios 8에서 작동하지 않습니다. 아래 코드를 보았습니다. 어떻게해야합니까?Afnetworking을 사용한 이미지 업로드가 ios8에서 작동하지 않습니다.

NSString *url = [NSString stringWithFormat:@"%@abc.php", SERVERNAME]; [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     for (int i = 0; i < filesCount; i++) { 
      NSString *imgName = [NSString stringWithFormat:@"image%d", (int)(i + 1)]; 
      NSData *imgData = [[NSData alloc] initWithContentsOfFile:[dataPath stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@", filelist[i]]]]; 
      [formData appendPartWithFileData:imgData name:imgName fileName:filelist[i] mimeType:@"image/png"]; 
     } 
     } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog("getting response");  } Failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     //NSLog(@"Error: %@ ***** %@", operation.responseString, error); 

    }]; 

디버그 포인트가 성공한 부분에 없습니다. 이 문제를 해결할 수 있도록 도와 주시겠습니까?

미리 감사드립니다.

당신은 당신의 프로젝트 또는 NSJSONSerialization 클래스

1 추가 SBJSON 클래스는 데이터를 인코딩하는 POST 요청에서 응답을 얻기 위해 코드 아래 사용 할 수

+0

안녕하세요, Rob. 요청 시간 초과 오류가 표시됩니다. 그리고 나는 또한 imgdata를 확인했다. 가치가 있습니다. 그게 아니야. –

+0

아주 좋습니다. 나는 이제 iOS 7에서 [Charles] (http://charlesproxy.com)로이 요청을 실행하고 iOS 8에서 다시 시도하고 어떤 차이가 있는지 확인할 것입니다. – Rob

답변

0

NSURL *url = [[NSURL alloc]initWithString:@"You -server -url "]; 

    NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

    // Server parameter dict 

    NSDictionary *jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys:txtUserName.text,@"Email",txtPassword.text,@"Password",[appDelegate uniqueIDForDevice],@"DeviceToken",@"ios",@"DeviceType", nil]; 

    NSString *jsonRequest = [jsonDict JSONRepresentation]; 
    NSData *requestData = [jsonRequest dataUsingEncoding:NSUTF8StringEncoding]; 

    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
    [theRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [theRequest setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
    [theRequest setHTTPBody: requestData]; 


    [NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue currentQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
    { 
     NSError *err = nil ; 

     NSDictionary *dict= [NSJSONSerialization JSONObjectWithData :data options : 0 error :&err]; 

     NSLog(@"%@",dict); 
    }];   
} 
+0

안녕하세요 Karan, 답변 해 주셔서 감사합니다. 하지만 내 질문은 Afnetworking 라이브러리를 사용하여 서버에 여러 이미지 업로드에 문제가 있습니다.이 방법은 이미지를 업로드하기위한 매개 변수를 전달하는 것입니다. Afnetworking 라이브러리 또는 다른 개념을 사용하여 여러 이미지를 업로드하는 다른 솔루션이있는 경우 그럼 나랑 나누어주세요. –

+0

안녕하세요, NSArray에 이미지 모음을 추가 한 다음 NSArray를 NSData NSData *로 변환하십시오. NSData * [NSKeyedArchiver archivedDataWithRootObject : ]; NSString * str = [[NSString alloc] initWithData : requestData 인코딩 : NSUTF8StringEncoding]; –

+0

@AshaSharma 문제가 해결 되었습니까? –

0

나는이 방법

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 

    NSURL *baseUrl = [NSURL URLWithString:url]; 

    NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); 
    [request setURL:baseUrl]; 
    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = @"0xKhTmLbOuNdArY"; 
    NSString *endBoundary = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary]; 

    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; charset=%@; boundary=%@", charset, boundary]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    NSMutableData *tempPostData = [NSMutableData data]; 
    [tempPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 



    for(int i=0;i<keys.count;i++){ 
     NSString *str = values[i]; 
     NSString *key =keys[i]; 
     NSLog(@"Key Value pair: %@-%@",key,str); 
     [tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [tempPostData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]]; 
     // [tempPostData appendData:[@"\r\n--%@\r\n",boundary dataUsingEncoding:NSUTF8StringEncoding]]; 
     [tempPostData appendData:[endBoundary dataUsingEncoding:NSUTF8StringEncoding]]; 

    } 

    //semd multiple images to server 
    for (int i = 0; i < filesCount; i++) { 

     [tempPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

     if (i == 0) 
     { 
      [tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image1\"; filename=\"%@\"\r\n", filelist[0]] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:imageData1]; 
      [tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     } 

     else if (i == 1) 
     { 
      [tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image2\"; filename=\"%@\"\r\n", filelist[1]] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:imageData2]; 
      [tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     } 
     else 
     { 
      [tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image3\"; filename=\"%@\"\r\n", filelist[2]] dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
      [tempPostData appendData:imageData3]; 
      [tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     } 
     //  [tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
     //  [tempPostData appendData:imgData]; 

    } 




    [tempPostData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [request setHTTPBody:tempPostData]; 
    _receivedData = [NSMutableData dataWithCapacity: 0]; 

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    if(theConnection) 
    { 

     NSLog(@"request uploading successful"); 


    } 
    else 
    { 
     _receivedData = nil; 
     NSLog(@"theConnection is NULL"); 
    } 
에게 시도

그것은 나를 위해 일하고있다. 여러 이미지 업로드 작업 중입니다. Afnetworking은 여전히 ​​ios8에서 문제가 있습니다.

감사합니다.

관련 문제