【问题标题】:Chrome not unzipping gzip file if the gzip file was created by combining multiple gzip files如果 gzip 文件是通过组合多个 gzip 文件创建的,则 Chrome 不会解压缩 gzip 文件
【发布时间】:2015-04-02 20:06:19
【问题描述】:

我正在创建两个 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 解压缩整个第二个文件吗?

谢谢。

【问题讨论】:

  • gzip 文件实际上并不意味着包含多个文件,您确定不想生成一个 zip 文件吗?
  • 我有一个大的 gzip 文件和一个小的 gzip 文件。我想在将它们作为单个文件(连接)提供给用户之前将它们合并在一起。我不想将两者解压缩并将它们添加在一起以生成新文件。
  • 我知道你做了,但通常没有完成,因为没有多少程序会弄清楚那部分,它们通常会在解压缩第一个文件后停止。更改 chrome 会很困难,更改自己的程序更容易,所以这是我的建议。
  • 是否有任何其他压缩方法可以让您做到这一点,或者有没有其他方法可以不打开两个压缩文件并将它们作为一个文件提供给用户?

标签: c# google-chrome gzip gzipstream


【解决方案1】:

尽管RFC 1952 指定“gzip 文件由一系列“成员”(压缩数据集)组成。”,尽管 gzip 可以正确解码此类流,但浏览器通常不兼容标准并且只会解码第一个成员。

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多