如何查看和删除目录中的zip文件和文件夹

时间:2019-04-12 05:11:28

标签: php

我正在尝试获取特定目录中所有ex的zip文件的列表。

C:/xampp/htdocs

但是最重要的是,我想从所有文件夹中获取所有zip文件,这意味着它应该检入所有子文件夹。

获取所有zip文件后,我想单击“删除”按钮删除zip文件。

我尝试通过谷歌搜索以下示例,但不起作用。我也尝试过其他解决方案。

foreach (glob("*.zip") as $filename) {
 if(unlink($filename))
        echo "success" ;
 else
        echo "Failure"
}

OR

  <?php 
function list_zipfiles($mydirectory) {

    // directory we want to scan
    $dircontents = scandir('c:/xampp/htdocs');

    // list the contents
    echo '<ul>';
    foreach ($dircontents as $file) {
        $extension = pathinfo($file, PATHINFO_EXTENSION);
        if ($extension == 'zip') {
            echo "<li>$file </li>";
        }
    }
    echo '</ul>';
}

1 个答案:

答案 0 :(得分:1)

这会将所有zip文件列出到特定目录中。

对于测试,您可以创建测试文件夹,并在其中添加一些内部文件夹并放入zip文件。这样一来,扫描和显示所有文件的时间就不会太长。

<?php

$mydirectory    = 'C:/xampp/htdocs/test';


// create recursive directory iterator for zip folder
$directory_iterator = new RecursiveDirectoryIterator($mydirectory); 
// required to iterate through results using foreach
$recursive_iterator = new RecursiveIteratorIterator($directory_iterator);
// filter only .zip files
$regex_iterator = new RegexIterator($recursive_iterator, '/^.*\.zip$/',
                          RegexIterator::GET_MATCH);

// iterate through results
foreach($regex_iterator as $file_info) {
    var_dump($file_info);
}

  

要删除文件

使用 unlink()函数删除文件。单击特定链接后,应带您到php页面,您可以在其中获取文件名并将其删除。

<?php

    if(isset($_POST) && !empty($_POST) && $_SERVER['REQUEST_METHOD'] === 'POST'){

        if (!empty($_POST['zip_file'])) {
            if (!unlink($_POST['zip_file']))
            {
               echo ("file cannot be deleted due to an error");
            }
            else
            {
               echo ("file has been deleted");
            }
        }
        header('location:zip_delete_demo.php');
        die();
    }

?>

    <html>
    <body>
        <form method="post" name="zip_form" id="zip_form">
        <?php
        $mydirectory    = 'C:\xampp\htdocs\php_demo';
        $directory_iterator = new RecursiveDirectoryIterator($mydirectory); 
        $recursive_iterator = new RecursiveIteratorIterator($directory_iterator);
        $regex_iterator = new RegexIterator($recursive_iterator, '/^.*\.zip$/',RegexIterator::GET_MATCH);

        foreach($regex_iterator as $file_info) {
            echo '<a class="btn_delete_zip" href="javascript:void(0);" data-href="'.$file_info[0].'">'.$file_info[0].'</a><br/>';
?>

  <?php          
        }

        ?>

        </form>
    </body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $(document).on('click','.btn_delete_zip',function(){
                var zip_file = jQuery(this).data('href');

                var input = $("<input>")
               .attr("name", "zip_file")
               .attr("type", "hidden")
               .val(zip_file);

                $('#zip_form').append(input);
                $('#zip_form').submit();


            });
        });
    </script>
    </html>
  

注释

请增加php.ini文件中的最大执行时间。 请不要通过放置任何exist或die函数来测试您的代码。它只会列出单个文件。