PHP可以解压缩使用.NET GZipStream类压缩的文件吗?

时间:2009-05-25 04:36:22

标签: c# php web-services compression gzip

我有一个C#应用程序,它与基于PHP的SOAP Web服务进行通信以进行更新和许可。

我正在开发一个反馈系统,供用户通过软件自动提交错误和tracelog。根据我发布的上一个问题,我觉得Web服务是最好的方式(最有可能以最少的配置正常工作)。

我目前的想法是使用.NET内置的gzip压缩来压缩文本文件,转换为base64,发送到Web服务,并将PHP脚本转换为二进制并解压缩数据。

PHP可以解压缩用GZipStream压缩的数据,如果是,怎么做?

5 个答案:

答案 0 :(得分:6)

我实际上尝试过这个。 GZipStream不起作用。另一方面,在.NET端使用DeflateStream进行压缩并在PHP端使用gzinflate进行解压缩可以正常工作。你的里程可能会有所不同......

答案 1 :(得分:1)

如果http级库实现它(客户端和服务器)http has support for gzip-compression,在这种情况下,没有理由手动压缩任何东西。你应该在冒险之前检查这是否已经发生。

答案 2 :(得分:0)

是的,PHP可以解压缩带有或不带标头的GZIP压缩字符串。

  • gzdecode用于GZIP文件格式(即与gzip兼容)
  • gzinflate表示“原始”DEFLATE格式
  • gzuncompress用于ZLIB格式(没有标题信息的GZIP格式)

由于我不熟悉.NET GZipStream,我不确定你想要哪一个。这听起来有点像gzuncompress,因为ZLIB格式是一种“流式”格式,但尝试这三种格式。

答案 3 :(得分:0)

由于服务器正在接受Web请求,因此您应该检查HTTP标头以确定是否有任何客户端接受GZIP编码,而不是每次都猜测和gzipping。

如果PHP客户端可以执行gzip itll设置标头,那么您的代码将做出反应并做正确的事情。当为您的代码提供设施以了解客户端的功能时,假设或猜测是一个糟糕的选择。

答案 4 :(得分:0)

我写了一篇我最近发布的文章,展示了如何在C#中压缩/解压缩。我用它几乎是同一个场景。我想将日志文件从客户端传输到服务器,它们通常非常大。但是在我的情况下,我的webservice在.NET中运行,所以我可以使用解压缩方法。但看起来PHP确实支持一个名为gzdecode的方法,它可以工作。

http://coding.infoconex.com/post/2009/05/Compress-and-Decompress-using-net-framework-and-built-in-GZipStream.aspx