我想删除目录中的文件,使用复选框选择文件,使用按钮事件删除所选文件。
基本上我希望它看起来像这样:
问题是,我通过php检索文件,但是我通过jquery放了这个复选框 我不知道如何将这些元素相互联系
如何删除这些选定的文件?
我的代码在这里:
$dir = 'C:\directory\of\files\here';
$files1 = scandir($dir);
$cnt = count($files1);
//var_dump($cnt);
echo "<h1><u> delete files from directory </u></h1>";
echo "<div class='container'>";
for($n=0; $n< $cnt; $n++)
{
if ( ($files1[$n])!= '.' && $files1[$n] != '..')
{
print_r("<input type='checkbox' />".($files1[$n])."<br/> ");
}
}
echo "</br>";
echo " <button>DELETE</button>";
echo "</div>";
?>
<html>
<head>
<script>
$(function() {
$( "input[type=submit], a, button" )
.button()
.click(function( event ) {
event.preventDefault();
});
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:0)
您需要设置一个<form>
标记,用于创建表单。
然后,您需要为复选框设置名称和值。
最后但并非最不重要的是,提交表单时,PHP会检查是否设置了$_POST['filenames']
,如果是,则循环数组并删除所有选定的文件。
<?php
$dir = 'C:\directory\of\files\here';
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
if( isset( $_POST['filesnames'] ) ) {
foreach( $_POST['filesnames'] as $key => $file ) {
unlink( $dir . '\\' . $file );
}
echo 'Files deleted';
}
else {
echo 'No files selected';
}
}
$files1 = scandir($dir);
$cnt = count($files1);
//var_dump($cnt);
echo "<h1><u> delete files from directory </u></h1>";
echo "<div class='container'>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
for($n=0; $n< $cnt; $n++)
{
if ( ($files1[$n])!= '.' && $files1[$n] != '..')
{
print_r("<input name='filesnames[]' value='".($files1[$n])."' type='checkbox' />".($files1[$n])."<br/> ");
}
}
echo "</br>";
echo " <submit>DELETE</submit>";
echo "</form>";
echo "</div>";
?>
答案 1 :(得分:0)
这是您的主文件
Select
和您的删除文件
column
基本上你对这段代码的处理是你从页面收集文件路径,然后通过ajax发送到delete.php删除文件的内容(使用unlink)。
但总是使用表单和输入验证,尤其是当你想要删除文件时!
答案 2 :(得分:-1)
你可以做这样的事情
<?php
$dir = 'C:\directory\of\files\here';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach($_POST['files'] as $file) {
$file = addslashes($file);
if(is_readable($file)) {
unlink($file);
}
}
} else {
$files = scandir($dir);
}
?>
<html>
<head>
<script>
$(document).ready(function() {
$('#deleteFiles').on('submit', function(e) {
e.preventDefault();
$.ajax({
url: location.href,
}).done(function() {
alert('Done !!!');
});
})
});
</head>
<body>
<h1><u> delete files from directory </u></h1>
<div class="container">
<form action="#" method="post" id="deleteFiles">
<?php foreach($files as $file): ?>
<?php if($file === '.' || $file === '..') { continue; } ?>
<lable>
<input type="checkbox" name="files[]" value="<?php echo $file; ?>">
$<?php echo $file; ?>
</lable>
<?php endforeach; ?>
<input type="submit" value="Delete">
</form>
</body>
</html>