PHP zip 扩展
短信预约 -IT技能 免费直播动态提醒
Zip
扩展是文件处理中最重要的项目之一。如果你想压缩文件或通过一个文件移动多个文件,则需要 ZIP
。
我们需要安装 libzip
来执行涉及其他平台的 ZIP
扩展的操作。
在 Ubuntu 中安装 ZIP
扩展
ZIP
已经包含在 windows PHP 中。我们将尝试为 Ubuntu 安装这个库。
在 Ubuntu
中运行以下命令以安装 libzip
库。
$ sudo apt-get update
$ sudo apt-get install -y
$ sudo apt-get install libzip-dev
输出:
Setting up libzip-dev:amd64 (1.7.3-1+ubuntu20.04.1+deb.sury.org+2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
下一步是为 ZIP
安装 PHP 扩展。
$ sudo apt install php7.4-zip
成功安装后,你可以在 PHP 中使用它。
在 PHP 中使用 ZipArchive()
类创建 Zip 文件
ZipArchive()
是用于在 PHP 中执行 ZIP 操作的类。使用 ZipArchive()
类,创建一个 Zip
文件。
<?php
$create_zip = new ZipArchive();
$file_name = "./New.zip";
if ($create_zip->open($file_name, ZipArchive::CREATE)!==TRUE) {
exit("cannot open the zip file <$file_name>\n");
}
$current_dir=getcwd();
//Create files to add to the zip
$create_zip->addFromString("file1 ". time().".txt" , "#1 This is This is the test file number one.\n");
$create_zip->addFromString("file2 ". time().".txt", "#2 This is This is the test file number one.\n");
//add files to the zip
$create_zip->addFile($current_dir . "/too.php","/testfromfile.php");
echo "Number of files added: " . $create_zip->numFiles;
echo "<br>";
echo "Failed to add:" . $create_zip->status ;
$create_zip->close();
?>
上面的代码创建了两个包含一些内容的文本文件,并将它们添加到一个 zip 文件中。
输出:
在 PHP 中使用 ZipArchive()
类创建 Zip
文件
让我们使用 PHP 的 ZipArchive()
类提取在第一个代码中创建的 zip 文件。
<?php
$extract_zip = new ZipArchive;
$open_zip = $extract_zip->open('New.zip');
if ($open_zip === TRUE) {
$extract_to = getcwd();
$extract_zip->extractTo($extract_to); //extract to the current working directory.
echo "Number of Files to be Extracted:" . $extract_zip->numFiles . "<br>";
$extract_zip->close();
echo 'Files Successfully Extracted!';
}
else {
echo 'Cannot Extract!';
}
?>
上面的代码将提取在第一个示例中创建的 New.zip
文件。
输出:
如何使用 PHP Zip
扩展来获取 ZIP
的所有成员文件的信息
PHP ZIP
扩展可以获取 ZIP
内所有文件的信息。
<?php
$zip_file = zip_open("New.zip");
if ($zip_file) {
while ($zip_members = zip_read($zip_file)) {
echo "Name of the file: " . zip_entry_name($zip_members) . "<br>";
echo "Original Size of the File: " . zip_entry_filesize($zip_members) . "<br>";
echo "Compressed Size of the File: " . zip_entry_compressedsize($zip_members) . "<br>";
echo "Method of Compression: " . zip_entry_compressionmethod($zip_members) . "<br>";
if (zip_entry_open($zip_file, $zip_members, "r")) {
echo "Content of the file:<br>";
$buf = zip_entry_read($zip_members, zip_entry_filesize($zip_members));
echo "$buf <br>";
zip_entry_close($zip_members);
}
echo "<br>";
}
zip_close($zip_file);
}
?>
上面的代码使用内置的 ZIP
函数来获取 ZIP
内的文件信息。
输出:
Name of the file: file1 1644842283.txt
Original Size of the File: 45
Compressed Size of the File: 39
Method of Compression: deflated
Content of the file:
#1 This is test file number one.
Name of the file: file2 1644842283.txt
Original Size of the File: 45
Compressed Size of the File: 39
Method of Compression: deflated
Content of the file:
#2 This is test file number two.
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341