2014-02-14 1 views
0

빠른 질문. 내 모든 업로드가 실패하고 어떤 이유로 NSURLConnection 이미지 서버에 업로드 오류

curl -v -F [email protected]/home/user/Downloads/test.jpg “http://...:8088/upload?session=(blabla)&conv=(blabla)" 

묘사로

은 내가 Curl 함수로 동일한 작업을 수행하려합니다. 이것은 내 코드입니다.

// create request 

static NSString *boundary = @"---------------------------14737809831466499882746641449"; 
NSData *imageData = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]; 

NSMutableURLRequest *request; 
request= [[NSMutableURLRequest alloc] init]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[request setHTTPShouldHandleCookies:NO]; 
[request setTimeoutInterval:30]; 
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@:8088/upload?session=%@&conv=%@", kQAServer, session , conv]]]; 
[request setHTTPMethod:@"POST"]; 


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

// add image data 
NSMutableData *postbody = [NSMutableData data]; 
[postbody appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"content\"; \r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[postbody appendData:imageData]; 
[postbody appendData:[[NSString stringWithFormat:@"--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:postbody]; 


NSURLResponse * response = nil; 
NSError * error = nil; 
NSData * data = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&response 
                error:&error]; 

if (error == nil) 
{ 
    NSString *fileID = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    return fileID; 
} 

return nil; 
+0

가능한 중복 (http://stackoverflow.com/ 질문/8564833/ios-upload-image-and-text-using-http-post) – Legolas

답변

0

error == nil을 사용하여 명령이 성공했는지 확인하지 마십시오. 이 명령은 오류없이 실패 할 수 있으며 오류없이 성공할 수 있습니다. (이것은 오류에 대한 전체 유사 프로토콜의 일부로 문서화되어 있습니다.)

대신 데이터가 있는지 확인하십시오. data == nil 경우 하드 오류가 발생하여 오류를 기록해야합니다.

(그리고 당신은 데이터 == 전무, 오류를 게시하시기 바랍니다, 우리가 도울 수이있는 경우.) [IOS는 HTTP의 POST를 사용하여 이미지와 텍스트를 업로드]의

+0

데이터가 0이 아닙니다. 유효하지 않습니다. 의미 업로드 실패 – Legolas

+0

알겠습니다. 무엇이 오류입니까? 데이터가 무엇입니까? HTML입니까? –

+0

오류가 없습니다. 데이터가 "예상치 못한 오류"입니다. – Legolas