2015-04-02 66 views
2

我创建两个gzip文件,其中一个仅包含一个gzip成员,第二个包含2个gzip成员(两个文件连接成一个单个gzip文件)。如果gzip文件是通过组合多个gzip文件创建的,Chrome不会解压缩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(); 

任何想法,我怎么能得到铬解压整个第二个文件中的两个文件?

谢谢。

+0

gzip文件并不是真的要包含多个文件,你确定你不想生成一个zip文件吗? – 2015-04-02 20:18:34

+0

我有一个大规模的gzip文件和一个小的gzip文件。我想在将它们作为单个文件(连接)提供给用户之前将它们合并在一起。我不想解压缩并将它们添加到一起以生成新文件。 – 2015-04-02 20:25:28

+0

我知道你做到了,但通常没有完成,因为没有多少程序会找出那部分,他们通常会在解压完第一个文件后停止。改变Chrome会很困难,改变自己的程序会更容易,所以这是我的建议。 – 2015-04-02 20:28:10

回答

0

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