You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP获取Zip压缩包内各文件的压缩与未压缩大小

用PHP的ZipArchive获取压缩包内文件的压缩与未压缩大小

你可以使用ZipArchive::statIndex()方法获取指定索引位置文件的详细信息,其中就包含了压缩大小和未压缩大小。下面是修改后的完整代码:

$zip = new ZipArchive;
// 打开指定压缩包,建议处理打开失败的情况
if ($zip->open('download/' . $results[0]['filename']) === TRUE) {
    $files = [];
    $i = 0;
    while ($name = $zip->getNameIndex($i)) {
        // 获取当前索引文件的统计信息
        $stat = $zip->statIndex($i);
        $files[] = [
            'filename' => $name,
            'compressed_size' => $stat['compressed_size'], // 压缩后大小(单位:字节)
            'uncompressed_size' => $stat['size'] // 原始未压缩大小(单位:字节)
        ];
        $i++;
    }
    $zip->close();
} else {
    echo '无法打开目标压缩包';
}

关键说明:

  • statIndex($i)接收文件在压缩包内的索引值$i,返回的关联数组里包含多项文件属性:
    • compressed_size:文件压缩后的字节数;
    • size:文件未压缩时的原始字节数;
  • 加入压缩包打开状态的判断,能避免后续逻辑因打开失败出现报错;
  • 如果需要把字节转换为KB、MB这类易读单位,可以自行编写简单的数值转换函数处理。

内容的提问来源于stack exchange,提问作者Artem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:07:34