zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    观察者设计模式
    JSP中用jsp:param传递中文参数出现乱码
    使用.msi进行安装mysql程序(超详细)
    扒来的lstdc++.6.0.9有效解决方案
    HTML响应状态码
    砸壳
    ipv6
    犀利的文章
    安装ReactNative开发IDE
    创建ReactNative的iOS项目
  • 原文地址:https://www.cnblogs.com/YearsOfDrunk/p/9581497.html
Copyright © 2011-2022 走看看