我正在向WCF服务发送包含文件名和base64encoded映像的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--
如何反序列化? Stream是否可行?我不只是想删除顶行然后开始反序列化JSON数组,我想知道为什么它看起来像这样。
答案 0 :(得分:3)
要处理您提供的消息,OperationContract需要看起来像:
[WebInvoke(Method =“POST”,UriTemplate =“/ UploadImage”,BodyStyle = WebMessageBodyStyle.WrappedRequest,ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json)] [OperationContract的] string UploadImage(string filename,string thebigfile);
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/bb885100.aspx
然后,您需要使用.NET Framework提供的解码器手动Base64解码“thebigfile”参数。据我所知,JSON内部没有对Base64的内置支持,有关如何支持各种数据类型的详细信息,请参阅http://msdn.microsoft.com/en-us/library/bb412170.aspx。