Codeigniter 框架 Zip 编码类中 read_dir 方法的 bug
程序员文章站
2024-01-29 18:51:22
...
Codeigniter 框架的压缩解码类,其中的 read_dir 方法,允许你压缩一个服务器某处存在的文件夹(以及它里面的文件和子文件夹)。
提供一个文件夹路径,zip 类将递归读取它并重新创建添加到存档。 你所提供的路径下面的所有文件都会被压缩进来,也包括所有子文件夹。
例如:
$path = '/path/to/your/directory/'; $this->zip->read_dir($path);
默认 Zip 文件会把第一个参数的完整文件夹路径保存到Zip文件里。如果你想忽略目标路径之前的文件夹结构,你可以传递 FALSE (布尔值) 到第二个参数。
例如:
$path = '/path/to/your/directory/'; $this->zip->read_dir($path, false);
这将创建一个包括 “directory” 在内的 ZIP 文件, 所有的子文件夹被正确地保存在里面, 但是不包括此文件夹 /path/to/your.
官方文档只提到了两个参数,源码里其实设置了三个:
read_dir($path, $preserve_filepath = TRUE, $root_path = NULL)
而通常,在框架运行环境内部,取得路径有几种方法:
APPPATH – 对应 Codeigniter 根目录,即 application/
FCPATH – 对应磁盘分区根目录,即 D:\xxx\codeigniter 根目录\
当使用 FCPATH 之类的方式获取目录绝对路径时,由于源码中处理了路径中反斜杠,导致前后 $root_path 值不一致,会出现第二参数 false 设置无效的问题。
参考资料:http://codeigniter.org.cn/user_guide/libraries/zip.html
上一篇: 成为PHP程序员的正确姿势