找回密码
 注册

ZipArchive addFile 传递的参数是文件夹时将导致整个代码失效

php 发表于 2015/12/17 01:12 | 显示全部楼层 |阅读模式
ZipArchive::addFile()只能将文件压进压缩包,如果将一个目录的路径作为第一个参数传递给了ZipArchive的addFile()方法,不会报任何错误,而且返回值也是true,但是所有当前ZipArchive做的操作全部会失效。即:如果指定的压缩文件原本不存在,即使之前的代码成功将文件压进了压缩文件,最终这个压缩文件并不会保存在硬盘上, 如果指定的压缩文件原本就存在,ZipArchive不会对文件作出任何改变。所以,在调用ZipArchive::addFile()之前,一定要判断给定的参数是文件路径还是文件夹路径。
  1. <?php
  2.         $z = new ZipArchive;
  3.         if(true === ($z->open('./foo.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE))){
  4.                 $z->setArchiveComment('Interesting!');
  5.                 $z->addFromString('domain.txt', 'wuxiancheng.cn');
  6.                 $folder = './test';
  7.                 !is_dir($folder) && mkdir($folder);
  8.                 if(true === $z->addFile($folder)){
  9.                         echo 'success'; // !!!
  10.                 }
  11.                 rmdir($folder);
  12.                 $z->close();
  13.         }
  14. ?>
复制代码

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表