You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter使用Zip库压缩文件夹后,如何仅保留目标文件夹名解压

解决CodeIgniter Zip库压缩时保留完整路径的问题

这个问题是因为CodeIgniter的read_dir()方法默认会保留完整的文件路径前缀,导致解压后出现一长串绝对路径层级。要实现解压后仅显示pdf_files文件夹及其内容,你只需要调整read_dir()的第二个参数,指定要剥离的路径前缀即可。

具体修改方案

CodeIgniter的read_dir()方法支持第二个参数,用来设置要从文件路径中移除的前缀部分。你只需要传入pdf_files的上级路径,就能让压缩包只保留pdf_files这个目录及其内部内容:

$estructure = "/home/administrator/Downloads/pdf_files/";
// 调用read_dir时,第二个参数传入要剥离的前缀路径
$this->zip->read_dir($estructure, "/home/administrator/Downloads/");
// 建议给archive方法指定完整的文件名,避免生成无名称的压缩包
$this->zip->archive('/var/www/folder_name.zip');
$this->zip->download('folder_name.zip');

另一种替代思路

如果你不想手动拼接前缀路径,也可以通过切换工作目录的方式,用相对路径读取目标文件夹:

// 保存当前工作目录,避免影响后续代码
$current_dir = getcwd();
// 切换到pdf_files的上级目录
chdir("/home/administrator/Downloads/");
// 读取相对路径下的pdf_files文件夹
$this->zip->read_dir("pdf_files/");
// 切回原来的工作目录
chdir($current_dir);

$this->zip->archive('/var/www/folder_name.zip');
$this->zip->download('folder_name.zip');

这样处理后,解压压缩包就只会得到pdf_files文件夹,里面包含原来的所有内容,不会出现多余的绝对路径层级了。

内容的提问来源于stack exchange,提问作者jikos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:09:12