我正在尝试获取特定目录中所有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>';
}
答案 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函数来测试您的代码。它只会列出单个文件。