当前位置: 首页> 最新文章列表> 从打开压缩包到获取文件大小,zip_entry_filesize 的完整使用流程是怎样的?

从打开压缩包到获取文件大小,zip_entry_filesize 的完整使用流程是怎样的?

M66 2025-06-22

在 PHP 中操作 ZIP 压缩包时,zip_entry_filesize 函数是获取压缩包内某个文件大小的重要工具。本文将详细介绍从打开压缩包到使用 zip_entry_filesize 获取文件大小的完整流程,并结合代码示例加深理解。


一、准备工作:打开 ZIP 压缩包

操作 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);
?>

五、总结

这样就完成了通过 PHP 原生 zip 函数从打开压缩包到获取文件大小的完整操作流程。

如果你处理 ZIP 文件需要精准控制和底层操作,以上方法是非常实用的选择。