如果gzip文件是通过组合多个gzip文件创建的,则Chrome不会解压缩gzip文件

时间:2015-04-02 20:06:20

标签: c# google-chrome gzip gzipstream

我正在创建两个gzip文件,一个只包含一个gzip成员,其中第二个包含2个gzip成员(两个文件连接成一个gzip文件)。

当我尝试通过网络服务器下载时,Chrome会解压缩第一个文件并按原样显示内容。

但是在下载第二个文件时,chrome似乎只解压缩第一个成员,而第二个成员保持未压缩状态。

我尝试使用7zip打开第二个文件并验证内容没问题。

以下是我用来在C#中生成两个文件的代码

FileStream fileStream = new FileStream("D:\\single_big_gzip.gz", FileMode.Create);
FileStream fileStream2 = new FileStream("D:\\multiple_gzip_files.gz", FileMode.Create);

// Write to First file
GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Compress, false);
StreamWriter writer = new StreamWriter(gzipStream);
writer.WriteLine("hello world!");
writer.Flush();
gzipStream.Close();
fileStream.Close();

// write to second file
gzipStream = new GZipStream(fileStream2, CompressionMode.Compress, true);
writer = new StreamWriter(gzipStream);
writer.WriteLine("Hello world!");
writer.Flush();
gzipStream.Close();

gzipStream = new GZipStream(fileStream2, CompressionMode.Compress, true);
writer = new StreamWriter(gzipStream);
writer.WriteLine("Bye Bye Birdie!");
writer.Flush();
gzipStream.Close();
fileStream2.Close();

知道如何让chrome解压缩整个第二个文件吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

虽然RFC 1952指定" gzip文件由一系列"成员"组成。 (压缩数据集)。" ,虽然gzip正确解码了这些流,但浏览器通常不符合标准,只会解码第一个成员。