2012-10-06 2 views
2

파일 이름과 base64 인코딩 된 이미지를 포함하는 JSON 메시지를 WCF 서비스로 보냅니다. 반환 스트림을 deserialize하는 방법으로 이미지로 다시 변환하는 방법을 잘 모르겠습니다.WCF에서 JSON 역 직렬화

WCF 인터페이스

[OperationContract] 
     [WebInvoke(
      Method = "POST", 
      UriTemplate = "/UploadImage", ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     string UploadImage(Stream image); 

그리고이 직렬화 어떻게

--hr56lXG6Q_hKg5opmTx4xejr28dU17AC 
Content-Disposition: form-data; name="entity" 

{"filename":"mypicture.jpg","thebigfile":"\/9j\/4Re6RXhpZgAATU0AKgAAAAgACwEPAAIAAAAOAAAAkgEQAAIAAAAGAAAAoAESAAMAAAABAAYAAAEaAAUAAAABAAAApgEbAAUAAAABAAAArgEoAAMAAAABAAIAAAExAAIAAAATAAAAtgEyAAIAAAAUAAAAygITAAMAAAABAAEAAIdpAAQAAAABAAAA3oglAAQAAAABAAACegAAAoBTb255IEVyaWNzc29uAExUMjZpAAAAAEgAAAABAAAASAAAAAE2LjEuQS4yLjQ1XzUzX2YxMDAApDIwMTI6MTA6MDYgMDk6MzI6MTcAABiCmgAF 
     and lots more of the base64 encoded image.... 
     --hr56lXG6Q_hKg5opmTx4xejr28dU17AC-- 

(나는 내가보고 이해하려고 노력 수있는 파일로 저장) 메시지의 일부? 스트림이가는 길입니까? 상위 행을 제거한 다음 JSON 배열의 비 직렬화를 시작하기 만하면되는 것은 아닙니다. 왜 이렇게 생겼는지 알고 싶습니다.

답변

3

당신이 준 메시지를 처리하기가의 OperationContract를 같은 것을 볼 필요가있다 :

[WebInvoke의 (방법 = "POST"를 UriTemplate = "/ UploadImage", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat .Json, RequestFormat = WebMessageFormat.Json)] [OperationContract] 문자열 UploadImage (문자열 파일 이름, 문자열 thebigfile);

더 많은 정보

당신은 수동으로 .NET Framework에서 제공하는 디코더를 사용하여 "thebigfile"매개 변수를 Base64로-디코딩해야

에 대한 http://msdn.microsoft.com/en-us/library/bb885100.aspx를 참조하십시오. 내가 아는 한 JSON 안에 Base64에 대한 내장 지원은 없다. 다양한 데이터 유형이 지원되는 방법에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/bb412170.aspx을 참조한다.