我尝试过:
- System.IO.Compression.GZipStream
- System.IO.Compression.DeflateStream
- ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream
- zlib.ZOutputStream
这些都似乎无法让ByteArray.uncompress
满意,即我收到以下错误:
错误#2058:解压数据时出错。
此外,Deflate和zlib的整个问题让我感到困惑。
根据wikipedia文章,zlib是DEFLATE的一种实现。但是根据Actionscript,它们是两个不同的东西?
微软似乎也表明Gzip至少使用Deflate算法,在他们的文档中提到GZipOutputStream使用与DeflateStream相同的压缩算法。因此,我认为这只是一个头文件的不同之处,这意味着对于'ByteArray.uncompress'来说是"不好的",因为"DEFLATE"算法仅受支持于AIR应用程序。以下是使用SharpZipLib的示例"服务器"代码(未能工作):
public virtual bool ProcessRequest(string path, HttpListenerContext context)
{
var buffer = File.ReadAllBytes(path);
// Specifying to strip header/footer from data as that seems to be what the
// docs for ByteArray.uncompress indicate is necessary
var deflater = new Deflater(Deflater.DEFAULT_COMPRESSION, true);
using (var zipStream = new DeflaterOutputStream(context.Response.OutputStream, deflater))
{
zipStream.Write(buffer, 0, buffer.Length);
}
}