![](/img/trans.png)
[英]C# Unzip a textfile (.GetInputStream()) from an archive to string using SharpZipLib
[英]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项目使用压缩,我尝试使用DeflateStream
的DeflateStream ,它工作得很好,你只需要改变你正在使用的命名空间,类是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.