使用php从zip中提取特定的文件类型

时间:2012-09-17 21:06:37

标签: php file types unzip

我正在创建一个简单的webapp,我的学生可以使用它来将他们的项目(作为.zip文件)上传到我的服务器。这个应用程序需要.zip>解压缩>显示指向其网络项目的链接。

我正在使用这样的php函数来解压缩zip文件:

function openZip($file_to_open) {  
    global $target;  

    $zip = new ZipArchive();  
    $x = $zip->open($file_to_open);  
    if($x === true) {  
        $zip->extractTo($target);  
        $zip->close();  

        unlink($file_to_open);  
    } else {  
         die("There was a problem. Please try again!"); 
    } 
}

是否可以检查正在提取的文件的类型,并且只允许特定文件类型解压缩?并不是说我不相信我的学生......只是想确保没有恶意的东西进入我的服务器。

我的学生将上传简单的网页项目,所以我只想要提取.html,.css和.js(以及图像文件类型和目录)。

2 个答案:

答案 0 :(得分:1)

查看ZipArchive::getFromName以从文件名中拉出Zip文件中的1个文件。您可能还想查看ZipArchive::getFromIndex

$zip = new ZipArchive;
if ($zip->open('test1.zip') === TRUE)
{
    echo $zip->getFromName('testfromfile.php');
    $zip->close();
}
else
{
    echo 'failed';
}

答案 1 :(得分:0)

您可以随时尝试finfo_file()

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, "yourfile.zip");
finfo_close($finfo);