【问题标题】:extract only specific file types from zip with php使用 php 从 zip 中仅提取特定的文件类型
【发布时间】:2012-09-10 03:11:24
【问题描述】:

我正在创建一个简单的 web 应用程序,我的学生可以使用它来将他们的项目(作为 .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(以及图像文件类型和目录)。

【问题讨论】:

标签: php file types unzip


【解决方案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';
}

【讨论】:

    【解决方案2】:

    你总是可以像这样尝试finfo_file()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2022-01-24
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多