• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
岁月佳醉
Years are drunk, the longer the fragrance
博客园    首页    新随笔    联系   管理    订阅  订阅

php创建含文件夹的zip文件

    这两天工作需要,要将不同日期上传的图片打包成zip下载,网上找了好多列子,都不能生成含目录结构的zip包,经过认真研究,终于搞定了。网上所谓的将文件夹压缩成zip文件,仅仅是将文件夹中所有文件提取进行打包,无法生成含目录结构的zip文件,好了不说了,上代码:

1、首先php要支持zip

配置:extension=php_zip.dll,不再过多叙述,

2、压缩文件:开始和网上多数例子相同,但注意核心是$zip->addFile()的使用,第二个参数是放在压缩包中的文件名称,所以这里直接将文件的相对路径作为文件的包内名称,然后就惊喜的发现zip包内文件夹出现了

$fileName = $tmpPath.$fileName;
if(!file_exists($fileName)){
//重新生成文件
$zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($fileName, ZIPARCHIVE::CREATE)!==TRUE) {
exit('无法打开文件,或者文件创建失败');
}
$datalist=list_dir($tmpPath);
foreach($datalist as $val){
if(file_exists($val)){

$zip->addFile($val, str_replace($tmpPath, '', $val));

 

}
}
$zip->close();//关闭
}


//获取文件列表
function list_dir($dir){
$result = array();
if (is_dir($dir)){
$file_dir = scandir($dir);
foreach($file_dir as $file){
if ($file == '.' || $file == '..'){
continue;
}
elseif (is_dir($dir.$file)){
$result = array_merge($result, list_dir($dir.$file.'/'));
}
else{
array_push($result, $dir.$file);
}
}
}
return $result;
}

 

以上,希望对遇到同样问题的同学能有所帮助

posted @ 2018-09-03 22:15  疯狂の熊猫  阅读(228)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3