我有一个包含大量媒体文件的PHP站点,用户需要能够一次下载多个文件作为.zip.我正在尝试使用ZipStream通过"存储"压缩动态地为拉链提供服务,所以我实际上不必在服务器上创建一个zip,因为有些文件非常庞大而且压缩它们的速度非常慢.
这很好用,我可以尝试的每个zip程序打开生成的文件,除了OS X的默认解压缩程序Archive Utility之外没有任何错误.双击.zip文件,Archive Utility确定它看起来不是真正的zip,而是压缩成.cpgz文件.
在OS X终端或StuffIt Expander中使用解压缩或同步解压缩文件没有问题,但我需要默认程序(Archive Utility)才能为我们的用户工作.
在其他可接受的zip文件中,什么样的东西(标志等)可以使Archive Utility认为文件不是有效的zip?
我已经阅读了这个问题,这似乎描述了一个类似的问题,但我没有任何通用的位域位设置,所以它不是第三位问题,我很确定我有有效的crc-32,因为当我不要,WinRAR会发挥合适.
我很乐意发布一些代码或链接到"坏"zip文件,如果它会有所帮助,但我只是使用ZipStream,强制它进入"大文件模式"并使用"store"作为压缩方法.
编辑 - 我也尝试了"deflate"压缩算法并得到相同的结果,所以我不认为它是"商店".值得指出的是,我一次从存储服务器中下载文件并在它们到达时将它们发送出来,因此需要在发送任何内容之前下载所有文件的解决方案不可行(极端例如5GB +的20MB文件.用户不能等到所有5GB都在下载开始之前转移到压缩服务器,否则他们会认为它已经坏了
这是一个140字节的"存储"压缩测试zip文件,它表现出这种行为:http://teknocowboys.com/test.zip