获取特定类型的文件并将其添加到现有的zip文件中

时间:2013-07-12 15:19:51

标签: php image zip directory gd

$zip = new ZipArchive();
    $filename = "image/files.zip";

    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
            exit("cannot open <$filename>\n");
    }

    $zip->addFile("$File", basename($File));
    $zip->close();

我已在zip中添加了一个文件,该文件位于变量'$ File'中。该文件存在于同一文件夹(图像)中。我需要在同一个zip文件中添加图像。这些图像位于“images”文件夹中。我想我需要扫描图像并将它们添加到相同的zip中。但我不知道该怎么做。

如何获取添加到现有zip文件或新文件中的文件的特定类型(jpeg,png,gif)?我必须在我的zip文件的根目录中添加图像,而不是在zip文件中的任何文件夹中。图像在一个目录('images')中,我需要将它们添加到我的zip文件中,该文件也保存在同一目录中。

2 个答案:

答案 0 :(得分:0)

$zip = new ZipArchive; 
if ($zip->open('source.zip') === TRUE) 
{ 
     for($i = 0; $i < $zip->numFiles; $i++) 
     {   
        $fp = $zip->getStream($zip->getNameIndex($i));
        if(!$fp) exit("failed\n");
        while (!feof($fp)) {
            $contents = fread($fp, 8192);
            // explode for extension and do what ever you want
        }
        fclose($fp);
     }
} 
else 
{ 
     echo 'Error reading zip-archive!'; 
} 

答案 1 :(得分:0)

这就是我解决它的方法。

        $dir = './property_image';
        $file1 = scandir($dir);
        foreach($file1 as $feel){
            $userfile_extn = substr($feel, strrpos($feel, '.')+1);
            if($userfile_extn === 'jpg' || $userfile_extn === 'png' || $userfile_extn === 'gif' || $userfile_extn === 'jpeg'){
                if(in_array($feel, $prop_image)){
                    //echo $feel;
                    $zip->addFile("./property_image/$feel", basename($feel));
                }

            } // end of if($extension ===

        } // end of foreach