2011-05-15 3 views
2

나는 아이폰 앱과 C# WCF 서비스를 만들어서 SQL 서비스 데이터베이스에 이미지를 업로드하려고한다. 나는있는 NSData 아래 이미지를 깨고 다음 코드를 사용하여 WCF 서비스에 떨어져 게시 내 응용 프로그램을 가지고아이폰에서 WCF 서비스로 이미지 업로드

:

NSData *imageData = UIImageJPEGRepresentation(self.image, 90); 

NSURL *url = [NSURL URLWithString:@"http://example.com/ImageDiaryService.svc/json/AddMediaItem"]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setPostValue:@"Test" forKey:@"Name"]; 
[request setPostValue:@"Test description." forKey:@"Description"]; 
[request setPostValue:@"JPEG" forKey:@"ImageType"]; 
[request setPostValue:@"iPhone" forKey:@"MediaType"]; 

[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"ImageData"]; 

[request setDidFinishSelector:@selector(uploadFinished:)]; 
[request setDidFailSelector:@selector(uploadFailed:)]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

난 데 문제는 웹 서비스입니다. 나는 앱 POST에서 어떤 유형의 데이터를 받아야하는지 잘 모르겠습니다. 바이트 배열로받은 시도했지만 작동하지 않았다.

내 WCF 서비스는 REST 서비스입니다.

도움을 주시면 감사하겠습니다.

답변

5

스트림으로 수신 해보십시오. http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx의 블로그 게시물은 WCF REST 서비스에서 임의의 데이터를 수신하는 방법을 보여줍니다.

+0

스트림을 통해 이미지를 수신하는 경우 데이터 계약을 서비스에 게시 할 수 있습니까? 게시물에서 스트림 매개 변수가 게시 본문을 통해 전달 된 유일한 매개 변수 여야한다는 내용을 읽었습니까? –

+0

아니요, 데이터 계약으로받지는 않지만 데이터 계약이 실제로 필요한 경우 데이터 계약을 생성 할 수있는 형식 (XML 또는 JSON)으로 이미지를 인코딩해야합니다. 두 경우 모두 약간의 퍼시픽 히트가있을 것입니다 (XML에서는 JSON에서 이미지를 base64 인코딩해야합니다. 바이트 [] 값은 정수 배열로 표시됨). 왜이 작업을 위해 데이터 계약을 전달해야합니까? (파일 내용 만 전달하면됩니까? 서비스의 다른 작업에 대해서는 원하는 경우 데이터 계약을 계속 사용할 수 있습니다.) – carlosfigueira

+0

다른 매개 변수와 함께 이미지를 업로드해야합니다. (이름, 설명, 소스, 이미지 유형 등). 이것을 처리하는 가장 좋은 방법은 무엇을 제안 하시겠습니까? 이미지를 업로드하고 데이터를 업로드하는 두 가지 방법을 만들 수 있다고 가정합니다. 내 서비스에 두 개의 게시물을 수행하는 것과 비교하여 Base64를 사용합니까? –