位置:首页 > 建站笔记 > PHP > PHP一键打包文件夹内文件实现

PHP一键打包文件夹内文件实现

发布时间:2021-01-08 10:39:26

文章来源:原创

访问次数:104

实现代码


//在指定路径创建一个空的压缩包 例如 当前路径 创建 pack.zip
// 获取压缩文件清单
$fileList = file_list(__DIR__."/temp/img");
// 打包文件名称
$_filename = date('YmdHis') . '.zip';
// 打包文件保存路径
$filename = __DIR__ .'/temp/'. $_filename;
// 如果复制空压缩包成功则加入压缩文件
if (copyFile(__DIR__ . '/pack.zip', $filename)) {
    // 实例化压缩类
    $zip = new \ZipArchive();
    // 打开压缩包
    if ($zip->open($filename, \ZipArchive::CREATE)) {
        foreach ($fileList as $file) {
            //向压缩包中添加文件
            $zip->addFile($file, basename($file));
        }
        //关闭压缩包
        $zip->close();
        exit('打包完成');
    } else {
        exit('打包失败');
    }
} else {
        exit('压缩包创建失败');
}

//自定义方法补充

// 获取所有文件夹
function file_list($path, $complete = true)
{
    //设置空数组
    $arr = array();
    //判断文件是否存在
    if (is_file($path)) {
    } else {
        //判断是否是路径
        if (is_dir($path)) {
            //获取目录下所有文件和目录
            $data = scandir($path);
            //判断是否为空
            if (!empty($data)) {
                //循环取出文件
                foreach ($data as $value) {
                    //过滤特殊文件
                    if ($value != '.' && $value != '..') {
                        //判断是返回完整路径还是仅文件名
                        if ($complete) {
                            $sub_path = $path . "/" . $value;
                        } else {
                            $sub_path =  $value;
                        }
                        //判断是否存在二级目录
                        if (is_dir($sub_path)) {
                            //递归二级目录文件
                            $temp = file_list($sub_path);
                            $arr = array_merge($temp, $arr);
                        } else {
                            $arr = array_merge([$sub_path], $arr);
                        }
                    }
                }
            }
        }
    }
    //返回数据
    return $arr;
}

// 复制文件
function copyFile($filepath, $tofilepath)
{
    //复制文件地址 复制文件到地址
    return copy($filepath, $tofilepath);
}



系统发生错误
(>﹏<)
MySQL Error!