2012-11-29 2 views
1

저는 지난 2 ~ 3 일 동안 문제가 생겼습니다. 나는 여러 부분으로 구성된 서버에 요청을 보내야합니다. 이미지와 json, 다중 요청/양식 데이터를 사용하여 요청을 보냈지 만 어떤 이유로 서버가 요청을받을 수 없었으므로 아무도이 문제를 해결할 수 없습니다.다중 이미지/혼합을 사용하여 ios의 json과 함께 업로드 이미지

사용중인 코드는 다음과 같습니다.

NSData *imageData = UIImagePNGRepresentation(img); 

    NSMutableURLRequest *theRequest =[NSMutableURLRequest requestWithURL:theURL]; 

    NSString *boundary = [NSString stringWithFormat:@"---------------------------14737809831466499882746641449"]; 

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 

    [theRequest addValue:contentType forHTTPHeaderField:@"Content-Type"]; 
[theRequest setHTTPMethod:@"POST"]; 


NSMutableString *theBody = [[NSMutableString alloc]init]; 

    [theBody appendString:[NSString stringWithFormat:@"\r\n--%@\r\n", boundary]]; 

    [theBody appendString:[NSString stringWithFormat:@"Content-Type: application/json\r\n\r\n"]]; 

//append The Json string 

[theBody appendString:myJsonString]; 

[theBody appendString:[NSString stringWithFormat:@"%@", boundary]]; 

//this appends the image 

[theBody appendString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"data\"; filename=\"photo\""]]; 

[theBody appendString:[NSString stringWithFormat:@"Content-Type: image/png\r\n\r\n"]]; 

[theBody appendString:[NSString stringWithFormat:@"%@",imageData]]; 

[theBody appendString:[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] ]; 

[theRequest setHTTPBody:[theBody dataUsingEncoding:NSUTF8StringEncoding]]; 

답변

0

NSMutableURLRequest를 사용하여 복잡한 느낌이 들었습니다. "ASIFormDataRequest"를 사용해보십시오. 사용하기 쉽습니다. 또한 응답을 캐싱하고 요청을 취소하는 등의 다른 많은 기능이 있습니다. 설명서는 here입니다.

0

기본적으로 나는 JSON 내에서 이미지를 보내는 동안 문제를 겪고 있습니다. 이 경우

, 당신은 NSData 모든 당신이 고장의 첫번째 이미지를 무엇을 할 수 및 데이터 후에 그렇게, Base64 인코더 방식이 필요합니다 지금

[Base64 encode:(NSData)data] 

, 당신은 당신의 필수 구조로 저장할 수 있습니다 당신이 사전에 할 필요가있는 경우, 같은 당신이 그런 식으로, 같은를 달성 할 수있는 말 : 이전에 사용

NSMutableDictionary* dict = [NSMutableDictionary new]; 
[dict setObject:[Base64 encode:data] forKey:@"imageBytes"]; // I did in single step but if you need you can do two steps... 

지금, 바로 JSON을 사용합니다.

아무쪼록 알려주세요. :)

+0

안녕하세요 Mohit 고맙습니다. 문제는 내가 base64로 인코딩하면 파일 크기가 33 % 증가합니다. 이것이 제가 multipart를 찾고 있었던 이유입니다. 멀티 파트 요청 –

+0

이봐, 나는 샘플을 "http://pastie.org/5452037"에 뒀다. 그것을 확인해보십시오. 문제가 해결 될지도 모릅니다. –

+0

확인하셨습니까? 그것은 작동하지 않습니까? 저에게 알려주십시오. –