如何检查zip文件是不是包含所有图像文件而不在服务器上解压缩

Posted

技术标签:

【中文标题】如何检查zip文件是不是包含所有图像文件而不在服务器上解压缩【英文标题】:How to check if zip file contains all images file without unzipping on server如何检查zip文件是否包含所有图像文件而不在服务器上解压缩 【发布时间】:2017-03-07 20:02:13 【问题描述】:

我想检查 zip 中的所有文件是否都是图像,直到现在我想出了这个解决方案

$zip = new ZipArchive;
$res = $zip->open('CQN.zip');

if ($res) 

    $legitImage=explode('.',$zip->statIndex(0)['name']);
    if($legitImage[1] !='jpg')
    
        // just stop processing
    

我只想循环 zip 中的每个文件以获取图像,如果找不到图像而不是回显错误

【问题讨论】:

【参考方案1】:
<?php
$za = new ZipArchive(); 

$za->open('theZip.zip'); 

for( $i = 0; $i < $za->numFiles; $i++ ) 
    $stat = $za->statIndex( $i ); 

     $ext = pathinfo(( basename( $stat['name'] ) . PHP_EOL ), PATHINFO_EXTENSION);

     echo $ext;
     echo "<br>";

?>

我正在从 FOR 循环中添加 $ext 数组,将数组放在外部循环中,您可以使用该数组进行操作,这取决于您不会做什么。

<?php
$array = array();


$za = new ZipArchive(); 

$za->open('theZip.zip'); 

for( $i = 0; $i < $za->numFiles; $i++ ) 

   $stat = $za->statIndex( $i ); 

     $ext = pathinfo(( basename( $stat['name'] ) . PHP_EOL ), PATHINFO_EXTENSION);

     $array[] = $ext;


print "For: ".count($array)."<br />";

print_r($array);

foreach ($array as $value) 
    echo $value . "<br />";

?>

【讨论】:

如何检查 jpeg 和 png 两种图像类型? 查找,我编辑我的答案,如果 elseif 则我会继续处理 这就是最好的! 我在答案的第二个版本中添加了数组,该数组是由 for 循环创建的,并且该数组超出了 for 循环。现在你有一个循环外的数组,可以根据你将来的需要进行操作。

以上是关于如何检查zip文件是不是包含所有图像文件而不在服务器上解压缩的主要内容,如果未能解决你的问题,请参考以下文章

检查路径在 Python 中是不是有效,而不在路径的目标处创建文件

如何检查该文件是不是存在于 zip 存档中?

在 python 中使用 zip() 时如何确保所有文件都已成功压缩,是不是有任何功能可以检查或确认?

检查appdata中是不是存在文件而不在python代码中添加完整路径

如何在codeigniter中将文件夹转换为Zip文件,其中文件夹包含一些图像文件

解压缩来自服务器的 zip 文件,而不在 ios swift 中本地保存,类似于 android 的操作?