在写PHP下载压缩包的过程中遇到了一个这样子的问题,现总结一下原因,以便下次再到此类似的坑。
遇到问题:
通过页面进行下载,提示如上图,找到原压缩文件,打下载解压正常。
找到下载方法:
错误内容:
断点确认文件名称和地址,确认无误,后经网络查询,发现输出顺序错误导致,当执行程序执行readfile会打开文件后再给压缩包文件赋值大小header('Content-length:'.$filesize)。这导致了电脑在识别的过程中,无法正确打开文件,所以进行修改
正确内容:
另外exit;也是有必要进行添加的,如果有开启缓存以后,没有加exit也是出现这个提示的错误,因为PHP的缓存执行机制为:
echo/print -> php buffer -> tcp buffer -> browser
如果没有加EXIT会导致缓存地执行上一次的结果,无法达到想要的结果。