2

我正在向 WCF 服务发送一条包含文件名和 base64 编码图像的 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 数组,我想知道为什么它看起来像这样。

4

1 回答 1

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 提供的解码器手动对“thebigfile”参数进行 Base64 解码。据我所知,JSON 中没有对 Base64 的内置支持,有关如何支持各种数据类型的详细信息,请参阅http://msdn.microsoft.com/en-us/library/bb412170.aspx 。

于 2012-10-06T18:30:03.123 回答