PHP创建并下载Zip文件异常:下载内容为解压后的文件夹
解决Mac系统下载Zip却自动解压为文件夹的问题
你遇到的这个状况根本不是代码的锅!你的PHP代码已经正确在服务器生成了Zip文件,问题出在Mac系统的默认行为上——Mac会自动识别并解压那些采用「存储」模式(无压缩)打包的Zip文件,导致你看起来像是直接下载了文件夹,而非预期的Zip包。
下面给你两种解决思路:
一、调整Mac系统设置(用户端操作)
- 打开「访达」,点击顶部菜单栏的「访达」→「设置」
- 切换到「通用」标签页,取消勾选**“打开安全的下载项目”**选项(不同MacOS版本的文字可能略有差异,比如有些版本叫“自动打开安全的下载文件”)
- 如果你只是临时需要处理单个文件,也可以按住
Option键点击下载的文件,选择「打开方式」→「归档实用工具」,或者右键选择「显示包内容」来查看原始的Zip结构。
二、修改代码,生成带压缩的Zip文件(服务端优化)
你的代码里用的FlxZipArchive类默认可能采用了ZipArchive::STORED(无压缩存储)的方式打包文件,这正是触发Mac自动解压的原因。你可以修改addDir的调用,指定压缩方式为ZipArchive::DEFLATED,生成带压缩的Zip包,Mac就不会自动解压了:
把原来的代码行:
$zip->addDir($path,basename($path));
替换为:
$zip->addDir($path,basename($path), ZipArchive::DEFLATED);
这样生成的Zip文件是经过压缩的,既不会触发Mac的自动解压,还能减小文件体积,一举两得。
内容的提问来源于stack exchange,提问作者user8313545
相关产品推荐
相关产品推荐

