生成zip压缩包是一个很常用的需求,在PHP中我们可以通过ZipArchive类来轻松实现。下面是使用PHP生成zip压缩包的完整攻略:
步骤1:创建ZipArchive对象
首先,我们需要实例化 ZipArchive
类,并且打开一个新的压缩文件。
$zip = new ZipArchive();
$zipFileName = 'test.zip';
if ($zip->open($zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
die ('Failed to create zip archive');
}
在以上代码中,我们使用 ZipArchive::CREATE
把压缩文件创建为新文件,如果该文件已存在,就会覆盖它。
步骤2:向zip压缩包中添加文件
添加文件到zip包有两种方式,一种是添加单个文件,另一种是添加一个目录下的所有文件。
添加单个文件
$fileName = 'example.txt';
$fileContent = 'This is an example file';
$zip->addFromString($fileName, $fileContent);
在以上代码中,我们通过 addFromString()
方法将文件 $fileName
和内容 $fileContent
添加到 zip 包中。
添加一个目录下的所有文件
$directoryPath = './directory';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = str_replace($directoryPath . '/', '', $filePath);
$zip->addFile($filePath, $relativePath);
}
}
在以上代码中,我们使用 RecursiveDirectoryIterator
和 RecursiveIteratorIterator
获取目录 $directoryPath
下所有文件,然后使用 addFile
方法将文件添加到 zip 包中。
步骤3:关闭zip压缩包
添加完所有文件后,我们关闭该压缩包。
$zip->close();
完整的代码示例:
$zip = new ZipArchive();
$zipFileName = 'test.zip';
if ($zip->open($zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
die ('Failed to create zip file');
}
// 添加单个文件
$fileName = 'example.txt';
$fileContent = 'This is an example file';
$zip->addFromString($fileName, $fileContent);
// 添加一个目录下的所有文件
$directoryPath = './directory';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directoryPath));
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = str_replace($directoryPath . '/', '', $filePath);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
以上就是使用PHP生成zip压缩包的完整攻略,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用php生成zip压缩包 - Python技术站