zip是一种常用的文件格式,可以使用数据压缩归档文件。
当我们希望允许用户从服务器立即下载多个文件夹和文件时,需要在飞行中创建ZIP文件。
它有助于压缩文件并创建存档一次以一次下载多个文件。
可以使用PHP动态创建ZIP文件,并且可以轻松地将存档文件从PHP脚本保存在服务器上。
可以使用PHP轻松实现从目录中创建zip存档。
PHP中的ZiParchive类提供了一种即时能够压缩ZIP文件中的文件或者文件夹。
我们可以使用PHP将整个目录递归到ZIP文件。
在本教程中,我们将向我们展示如何使用PHP从文件夹中创建ZIP文件。
Ziparchiver类
ZiParchiver类有助于使用PHP Zi,7Achive从服务器上的文件夹(文件和子目目表)中的zip文件。
- zipdir() - 此函数在递归地包括父目录中创建一个文件夹的zip。
- '$sourcepath' - 要填充目录的相对路径。
- '$outzippath' - 保存zip文件的路径。
- Dirtozip() - 它是ZiParchiver类的辅助功能,用于将文件夹中的文件和子目录添加到zip文件。
<?php Class ZipArchiver { /** * Zip a folder (including itself). * * Usage: * Folder path that should be zipped. * * @param $sourcePath string * Relative path of directory to be zipped. * * @param $outZipPath string * Path of output zip file. * */ public static function zipDir($sourcePath, $outZipPath){ $pathInfo = pathinfo($sourcePath); $parentPath = $pathInfo['dirname']; $dirName = $pathInfo['basename']; $z = new ZipArchive(); $z->open($outZipPath, ZipArchive::CREATE); $z->addEmptyDir($dirName); if($sourcePath == $dirName){ self::dirToZip($sourcePath, $z, 0); }else{ self::dirToZip($sourcePath, $z, strlen("$parentPath/")); } $z->close(); return true; } /** * Add files and sub-directories in a folder to zip file. * * @param $folder string * Folder path that should be zipped. * * @param $zipFile ZipArchive * Zip file where files end up. * * @param $exclusiveLength int * Number of text to be excluded from the file path. * */ private static function dirToZip($folder, &$zipFile, $exclusiveLength){ $handle = opendir($folder); while(FALSE !== $f = readdir($handle)){ //Check for local/parent path or zipping file itself and skip if($f != '.' && $f != '..' && $f != basename(__FILE__)){ $filePath = "$folder/$f"; //Remove prefix from file path before add to zip $localPath = substr($filePath, $exclusiveLength); if(is_file($filePath)){ $zipFile->addFile($filePath, $localPath); }elseif(is_dir($filePath)){ //Add sub-directory $zipFile->addEmptyDir($localPath); self::dirToZip($filePath, $zipFile, $exclusiveLength); } } } closedir($handle); } }
在PHP中创建zip文件
使用ziparchiver类存档给定文件夹的所有文件和子目录,并从PHP中的脚本创建ZIP文件。
- 包含并初始化ZiParrive类。
- 指定要作为zip存档的目录的路径。
- 指定在服务器上保存zip文件的路径。
- 调用ziparchiver类的'zipdir()'函数创建zip。
//Include and initialize ZipArchive class require_once 'ZipArchiver.class.php'; $zipper = new ZipArchiver; //Path of the directory to be zipped $dirPath = '/path/to/sourceDir'; //Path of output zip file $zipPath = '/path/to/archive-'.time().'.zip'; //Create zip archive $zip = $zipper->zipDir($dirPath, $zipPath); if($zip){ echo 'ZIP archive created successfully.'; }else{ echo 'Failed to create ZIP.'; }
日期:2020-06-02 22:15:27 来源:oir作者:oir