使用复选框从目录中删除文件

时间:2015-07-22 08:20:58

标签: javascript php jquery html

我想删除目录中的文件,使用复选框选择文件,使用按钮事件删除所选文件。

基本上我希望它看起来像这样:

enter image description here

问题是,我通过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>

3 个答案:

答案 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>