2013-08-26 4 views
0

.NET 웹 서비스를 사용하여 iOS 응용 프로그램을 개발 중입니다. 웹 서비스 중 하나에서 "파일"이라는 매개 변수에 HttpPostedFileBase이라는 이미지를 보내야합니다. 그러면 이미지 URL과 상태 매개 변수가 응답으로 반환됩니다. 사실 HttpPostedFileBase 무엇인지 모르겠습니다. 하지만 바이트로 보내려고합니다. WS에서 null로 이미지 URL을 가져오고 있습니다. 나는 WS 호출이 잘 작동한다고 생각하지만 문제는 내가 이미지를 보내는 방식이다. 다음 코드를 사용하여 이미지 데이터를 HTTP 본문에 추가하고 있습니다..NET 웹 서비스로 이미지 보내기

NSData *imageData = UIImageJPEGRepresentation(image, 1); 
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"file.jpeg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:imageData]; 
[request addValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"]; 
[request addValue:[NSString stringWithFormat:@"%i", [postData length]] forHTTPHeaderField:@"Content-Length"]; 
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

제가이 작업을 얻을 수있는 방법을 알려 주시기 바랍니다. 더 자세한 정보가 필요하시면 알려주세요.

감사합니다.

+0

콘텐츠 머리글 부분없이 콘텐츠를 서버로 보내므로 작동하지 않습니다. 이 라인을 "mutablePostData = [NSMutableData dataWithData : imageData];'"~ [[mutablePostData appendData : imageData];' "로 변경하십시오. 그리고, 또한, 나는 내용 경계와 endlines를 볼 수 없다 ?? –

+0

@FahriAzimov, 죄송합니다. 내 실수. 지금 편집 된 코드를 확인하십시오. 감사. – EmptyStack

+0

에 대한 빠른 검색 결과는 다음과 같습니다 : http://stackoverflow.com/questions/8564833/ios-upload-image-and-text-using-http-post Good Luck! –

답변

0

죄송합니다들. 문제는 HTTP 헤더에있었습니다. 위의 @FahriAzimov가 게시 한 링크 (ios Upload Image and Text using HTTP POST)가 도움이되었습니다. 실제로 .NET 웹 서비스에 대해 다른 형식이있을 것이라는 사실이 혼란 스러웠습니다.

일반 웹 서비스처럼 이미지를 보내야했습니다. 작업 코드는 다음과 같습니다.

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

[postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", @"file"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:imageData]; 
[postData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

모두에게 감사드립니다.

-1

사용 ASIHTTPRequest의 libraray는 매우 좋은, 당신은 당신의 .NET 서버에 첨부 파일로 이미지를 보낼 수 있습니다 .... http://allseeing-i.com/ASIHTTPRequest/How-to-use

here is sample code 

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

// Upload a file on disk 
[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" 
forKey:@"photo"]; 

// Upload an NSData instance 
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"]; 
+2

ASIHTTP 사용을 중단하십시오. 개발자가 지원을 제거했으며 ARC를 사용할 수 없습니다. –

+0

고마워! 위의 링크에있는 페이지의 첫 번째 줄에는 *** "더 이상이 라이브러리에서 작업하지 않습니다. 새 프로젝트에 다른 것을 사용하는 것이 좋습니다. ***" 당신은 아직도 그것을 사용하는 것이 안전하다고 생각합니까? – EmptyStack

+1

@EmptyStack : 저는 prjs에서 ASIHTTPRequest를 사용하고 있으며 Apple에 살고 있습니다. 문제가 있다고 생각하지 않습니다. – Pradeep

관련 문제