繁体   English   中英

PHP =>膨胀来自C#SharpZipLib的GZipped字符串?

[英]PHP => Inflate GZipped string coming from C# SharpZipLib?

我有一个C#应用程序,我使用SharpZipLib来收集一个非常长的字符串,然后将数据发送到放弃字节[]的Base64字符串中的PHP服务。

出于某种原因,当试图在PHP端对它进行膨胀时,它会返回一个错误:'gzinflate:data error'。

如何在PHP中扩展gzip压缩字符串?

这是C#代码:

    byte[] sIn = System.Text.UTF8Encoding.UTF8.GetBytes(data);

    MemoryStream rawDataStream = new MemoryStream();
    GZipOutputStream gzipOut = new GZipOutputStream(rawDataStream);
    gzipOut.IsStreamOwner = false;

    gzipOut.Write(sIn, 0, sIn.Length);
    gzipOut.Close();

    byte[] compressed = rawDataStream.ToArray();

    // data sent to the php service
    string b64 = Convert.ToBase64String(compressed);

PHP代码:

    $inflated = base64_decode($_POST['data']);

    // crash here
    $inflated = gzinflate($inflated);

提前致谢!

不能真正说明为什么GZipOutStream失败了,虽然我猜它正在做其他事情然后只是一个纯粹的deflate -compression。 我将代码更改为使用System.IO.Compression DeflateStream ,然后它就像一个魅力。

byte[] sIn = UTF8Encoding.UTF8.GetBytes("testing some shit");

MemoryStream rawDataStream = new MemoryStream();
DeflateStream gzipOut = new DeflateStream(rawDataStream, CompressionMode.Compress);

gzipOut.Write(sIn, 0, sIn.Length);
gzipOut.Close();

byte[] compressed = rawDataStream.ToArray();

// data sent to the php service
string b64 = Convert.ToBase64String(compressed);

编辑

由于问题是关于对Windows Phone项目使用压缩,我尝试使用DeflateStreamDeflateStream ,它工作得很好,你只需要改变你正在使用的命名空间,类是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM