从PHP生成的ZIP可以与winrar一起使用,但不适用于其他人

时间:2012-12-02 19:28:01

标签: php zip

我有一些允许用户提交文件的PHP代码。 然后我可以下载ZIP文件。如果我使用Winrar的窗口,它解压缩,我可以打开我的文件,这一切都很好。我已在多台计算机上测试过它。

如果我没有winrar而且我在Windows 8或Windows 7(或OSX)中使用默认的解压缩程序,则会收到一条消息,指出该zip文件无效。

是否有任何已知问题我无法找到?有谁知道什么可能导致这种行为?

谢谢,

这是输出zip的链接。 https://www.dropbox.com/s/imvzixl3y3l12l1/TestAreaForMax-aa-57.zip

1 个答案:

答案 0 :(得分:3)

如果没有看到您的代码和ZIP文件,没有人会确定,但我记得有类似的问题,看来我的脚本抛出了一些错误消息,最终产生了ZIP存档。有些解压缩设法从此恢复,其他人没有,所以我建议在任何文本编辑器中打开你的ZIP文件,看看你是否在文件的开头没有像PHP警告信息。

修改

常规zip文件以"PK"开头。你的文件以" PK"开头,所以除非你真的不需要,否则从产生你的zip文件的PHP脚本中删除?>(我建议从所有脚本中删除它),因为在某个地方有一个空格做我上面描述的,并且很可能在?>

之后潜伏

如果您使用的是PHP代码块,则空白区域不执行任何操作。但是通过放置?>,您可以在脚本结束时告诉PHP。在PHP代码块之外,只有空白区域被发送到客户端。因此,如果你保留?>并且空间在它之后,那么它将被发送。如果脚本的输出是可下载的,则表示空间将“加入”用户保存的字节流。通过删除?>你没有明确告诉PHP代码的结束位置,在这种情况下,它将自动以源文件的结尾结束。由于编辑器的设置,白色空间是一个跟踪的婊子,因为它通常是“不可见的”(因此我设置我的语法高亮显示不同颜色的空间而不是背景颜色)

一般情况下,由于上述原因,如果您不将PHP代码与任何内容(即HTML)混合使用,则始终不要使用?>。将编辑器配置为在保存

上自动修剪尾随空格总是有帮助的