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 서비스입니다.
도움을 주시면 감사하겠습니다.
스트림을 통해 이미지를 수신하는 경우 데이터 계약을 서비스에 게시 할 수 있습니까? 게시물에서 스트림 매개 변수가 게시 본문을 통해 전달 된 유일한 매개 변수 여야한다는 내용을 읽었습니까? –
아니요, 데이터 계약으로받지는 않지만 데이터 계약이 실제로 필요한 경우 데이터 계약을 생성 할 수있는 형식 (XML 또는 JSON)으로 이미지를 인코딩해야합니다. 두 경우 모두 약간의 퍼시픽 히트가있을 것입니다 (XML에서는 JSON에서 이미지를 base64 인코딩해야합니다. 바이트 [] 값은 정수 배열로 표시됨). 왜이 작업을 위해 데이터 계약을 전달해야합니까? (파일 내용 만 전달하면됩니까? 서비스의 다른 작업에 대해서는 원하는 경우 데이터 계약을 계속 사용할 수 있습니다.) – carlosfigueira
다른 매개 변수와 함께 이미지를 업로드해야합니다. (이름, 설명, 소스, 이미지 유형 등). 이것을 처리하는 가장 좋은 방법은 무엇을 제안 하시겠습니까? 이미지를 업로드하고 데이터를 업로드하는 두 가지 방법을 만들 수 있다고 가정합니다. 내 서비스에 두 개의 게시물을 수행하는 것과 비교하여 Base64를 사용합니까? –