在PHP 中操作ZIP 壓縮包時, zip_entry_filesize函數是獲取壓縮包內某個文件大小的重要工具。本文將詳細介紹從打開壓縮包到使用zip_entry_filesize獲取文件大小的完整流程,並結合代碼示例加深理解。
操作ZIP 文件,首先需要打開壓縮包。 PHP 中常用zip_open函數打開一個ZIP 文件,返回一個資源句柄。
<?php
$zipFile = 'http://m66.net/example.zip'; // 這裡使用示例域名m66.net
$zip = zip_open($zipFile);
if ($zip === FALSE) {
die('無法打開壓縮包');
}
?>
注意: zip_open支持本地文件路徑和部分遠程文件,但推薦先將遠程文件下載到本地再操作。
打開壓縮包後,需要逐個遍歷其中的條目(文件或文件夾)。可以使用zip_read函數獲取下一個條目。
<?php
while ($entry = zip_read($zip)) {
$filename = zip_entry_name($entry);
echo "文件名:{$filename}\n";
}
?>
獲取文件大小時,需先用zip_entry_open打開條目,然後通過zip_entry_filesize獲取大小,完成後關閉條目。
<?php
if (zip_entry_open($zip, $entry)) {
$filesize = zip_entry_filesize($entry);
echo "文件大小:{$filesize} 位元組\n";
zip_entry_close($entry);
} else {
echo "無法打開條目\n";
}
?>
將上面步驟整合,演示從打開壓縮包到獲取每個文件大小的完整流程:
<?php
$zipFile = 'http://m66.net/example.zip'; // 遠程壓縮包示例
$zip = zip_open($zipFile);
if ($zip === FALSE) {
die('無法打開壓縮包');
}
while ($entry = zip_read($zip)) {
$filename = zip_entry_name($entry);
echo "文件名:{$filename}\n";
if (zip_entry_open($zip, $entry)) {
$filesize = zip_entry_filesize($entry);
echo "文件大小:{$filesize} 位元組\n";
zip_entry_close($entry);
} else {
echo "無法打開條目\n";
}
echo "--------------------\n";
}
zip_close($zip);
?>
使用zip_open打開ZIP 文件資源。
用zip_read遍歷所有條目。
通過zip_entry_open打開具體文件條目。
使用zip_entry_filesize獲取文件大小。
關閉條目zip_entry_close和關閉壓縮包zip_close 。
這樣就完成了通過PHP 原生zip函數從打開壓縮包到獲取文件大小的完整操作流程。
如果你處理ZIP 文件需要精準控制和底層操作,以上方法是非常實用的選擇。