如何用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
相关产品推荐
相关产品推荐

