2012-10-06 52 views
2

我正在向WCF服務發送包括文件名和base64編碼圖像的JSON消息。我不確定如何將其轉換回圖像,更具體地反序列化返回流。反序列化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] string UploadImage(string filename,string thebigfile);

瞭解更多信息

然後需要使用.NET Framework提供瞭解碼器,手動使用Base64解碼「thebigfile」參數見http://msdn.microsoft.com/en-us/library/bb885100.aspx。據我所知,在JSON內部沒有對Base64的內置支持,請參閱http://msdn.microsoft.com/en-us/library/bb412170.aspx以瞭解各種數據類型的支持細節。