zoukankan      html  css  js  c++  java
  • 文件管理的练习(目录文件的打开,双击返回上一层目录、双击打开子目录文件)

    文件管理的核心是要找文件的路径

    例题参考的是www目录下的gongju文件夹

    第一步:定义要显示的文件夹

    $fname="../gongju";   /*取此文件的上级目录中的gongju文件夹*/

    第二步:打开目录文件夹,并记得关闭,两个语句一起写上

    $dir=opendir($fname);
    内容。。。
    closedir($dir);

    第三步:遍历目标文件夹

    $fname="../gongju"; 
        
        $dir=opendir($fname);
    
        while($n=readdir($dir))  /* readdir()是读目录文件夹,读完之后,把它交给一个变量$n*/
        {
            $url=$fname."/".$n;   /* 把目录下的每个文件拼成一个完整路径*/
        }
        closedir($dir);

    第四步:拼成完整路径后,要判断一下这个文件是目录还是文件

    $fname="../gongju";  
        $dir=opendir($fname);
        while($n=readdir($dir))  
        {
            $url=$fname."/".$n;  
            
             if($n!="." && $n!="..") /* 筛选出不是。或者。。的文件*/
             {
                if(is_dir($url))   /*判断是不是目录*/
                {
                    echo "<div class='file mulu' lj='{$url}'>{$n}</div>";  /*如果是目录,要保存它的路径,因为还要双击打开*/
                }
                else
                {
                    echo "<div class='file' lj='{$url}'>{$n}</div>"; /* 如果是文件,直接输出即可*/
                }
            
             }
        }
        closedir($dir);

    第五步:给输出的目录和文件加样式

    *{ margin:0px auto; padding:0px}
    .file{ 50%; height:35px; line-height:35px; vertical-align:middle; border:1px solid #63C; margin-top:2px;}
    .mulu{ background-color:#63C; color:white}
    .prev{ background-color:#F63; color:white}

    初步效果图

    第六步:加双击事件,思路是把路径传回当前页面,把$fname的值变为传回来的路径即可,传值方式除了get、post还有session

    <script type="text/javascript">
        $(".mulu").dblclick(function(){
            var url=$(this).attr("lj");
            $.ajax({
                type:"post",
                url:"lujingchuli.php",
                async:true,
                data:{url:url},
                dataType:"TEXT",
                success:function(data)
                {
                    window.location.href="wenjiancaozuo.php";  /*指向当前页面,相当于刷新页面*/
                }
            });
        })
    </script>

    处理页面

    <?php
    session_start();
    $url=$_POST["url"];
    $_SESSION["url"]=$url;   
    ?>

    第七步:把传回来的session里的值取到,赋值给$fname

    <?php
        session_start();
        
        $fname="../gongju";  
        
        if(!empty($_SESSION["url"]))
        {
            $fname=$_SESSION["url"];
        }
        
        
        $dir=opendir($fname);
        while($n=readdir($dir))  
        {
            $url=$fname."/".$n;  
            
             if($n!="." && $n!="..") /* 筛选出不是。或者。。的文件*/
             {
                if(is_dir($url))   /*判断是不是目录*/
                {
                    echo "<div class='file mulu' lj='{$url}'>{$n}</div>";  /*如果是目录,要保存它的路径,因为还要双击打开*/
                }
                else
                {
                    echo "<div class='file' lj='{$url}'>{$n}</div>"; /* 如果是文件,直接输出即可*/
                }
            
             }
        }
        closedir($dir);
        ?>

    第八步:返回上一层操作

    首先要判断是不是gongju这一级文件,如果是,不显示返回上一层,如果不是显示;并添加返回上一层

    $fname="../gongju"; 
        $jdlj=realpath($fname);  取fname的绝对路径
    
        if($jdlj=="D:\shujuku\wamp\www\gongju")   /*需要转义一下*/
        {
            
         } else
         {
             $fuji=dirname($fname);              /* 取点击文件的父级文件路径  */
             echo "<div class='file prev' lj='{$fuji}'>返回上一级<div>";
         }
    
        
        
        $dir=opendir($fname);
        while($n=readdir($dir))  
        {
            $url=$fname."/".$n;  
            
             if($n!="." && $n!="..") /* 筛选出不是。或者。。的文件*/
             {
                if(is_dir($url))   /*判断是不是目录*/
                {
                    echo "<div class='file mulu' lj='{$url}'>{$n}</div>";  /*如果是目录,要保存它的路径,因为还要双击打开*/
                }
                else
                {
                    echo "<div class='file' lj='{$url}'>{$n}</div>"; /* 如果是文件,直接输出即可*/
                }
            
             }
        }
        closedir($dir);
        ?>

    给返回上一层添加双击事件

        $(".prev").dblclick(function(){
            var url=$(this).attr("lj");
            $.ajax({
                type:"post",
                url:"lujingchuli.php",
                async:true,
                data:{url:url},
                dataType:"TEXT",
                success:function(data)
                {
                    window.location.href="wenjiancaozuo.php";  /*指向当前页面,相当于刷新页面*/
                }
            });
        })




    完整步骤如下

    <style type="text/css">
            *{ margin:0px auto; padding:0px}
    .file{ 50%; height:35px; line-height:35px; vertical-align:middle; border:1px solid #63C; margin-top:2px;}
    .mulu{ background-color:#63C; color:white}
    .prev{ background-color:#F63; color:white}
        </style>
    </head>
    <body>
        <?php
        session_start();
        if(!empty($_SESSION["url"]))
        {
            $fname=$_SESSION["url"];
        }
        
        
        $fname="../gongju"; 
        $jdlj=realpath($fname);  取fname的绝对路径
    
        if($jdlj=="D:\shujuku\wamp\www\gongju")   /*需要转义一下*/
        {
            
         } else
         {
             $fuji=dirname($fname);              /* 取点击文件的父级文件路径  */
             echo "<div class='file prev' lj='{$fuji}'>返回上一级<div>";
         }
    
        
        
        $dir=opendir($fname);
        while($n=readdir($dir))  
        {
            $url=$fname."/".$n;  
            
             if($n!="." && $n!="..") /* 筛选出不是。或者。。的文件*/
             {
                if(is_dir($url))   /*判断是不是目录*/
                {
                    echo "<div class='file mulu' lj='{$url}'>{$n}</div>";  /*如果是目录,要保存它的路径,因为还要双击打开*/
                }
                else
                {
                    echo "<div class='file' lj='{$url}'>{$n}</div>"; /* 如果是文件,直接输出即可*/
                }
            
             }
        }
        closedir($dir);
        ?>
    </body>
    </html>
    <script type="text/javascript">
        $(".mulu").dblclick(function(){
            var url=$(this).attr("lj");
            $.ajax({
                type:"post",
                url:"lujingchuli.php",
                async:true,
                data:{url:url},
                dataType:"TEXT",
                success:function(data)
                {
                    window.location.href="wenjiancaozuo.php";  /*指向当前页面,相当于刷新页面*/
                }
            });
        })
        
        
        $(".prev").dblclick(function(){
            var url=$(this).attr("lj");
            $.ajax({
                type:"post",
                url:"lujingchuli.php",
                async:true,
                data:{url:url},
                dataType:"TEXT",
                success:function(data)
                {
                    window.location.href="wenjiancaozuo.php";  /*指向当前页面,相当于刷新页面*/
                }
            });
        })
    </script>

    给文件添加删除和新建文件的操作

    $jdlj = realpath($fname);
    if($jdlj == "D:\wamp\www\1027")
    {    
    }
    else
    {
        $fuji = dirname($fname);
        echo "<div class='file prev' lj='{$fuji}' >返回上一级</div>";
    }
    
    
    //遍历文件夹
    $dir = opendir($fname);
    
    while($n = readdir($dir))
    {
        $url = $fname."/".$n;
        if($n!="." && $n!="..")
        {
            if(is_dir($url))
            {
                echo "<div class='file mulu' lj='{$url}' >{$n}</div>";
            }
            else
            {
                echo "<div class='file' lj='{$url}'>{$n}  
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type='button' value='删除' lj='{$url}' class='sc'/>    //添加一个删除按钮
                </div>";
            }
        }
    }
    
    closedir($dir);
    
    
    ?>
    <input type="text" id="name"/>
    <input type="button" value="新建" id="newf" />    // 新建文件夹
    
    </body>
    <script type="text/javascript">
    $(".mulu").dblclick(function(){
            var url = $(this).attr("lj");
            $.ajax({
                    url:"chuli.php",
                    data:{url:url},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                            window.location.href = "test.php";
                        }
                });
        })
        
    $(".prev").dblclick(function(){
            var url = $(this).attr("lj");
            $.ajax({
                    url:"chuli.php",
                    data:{url:url},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                            window.location.href = "test.php";
                        }
                });
        })
    $(".sc").click(function(){
            var lj = $(this).attr("lj");
            $.ajax({
                    url:"shanchu.php",
                    data:{lj:lj},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                            window.location.href = "test.php";
                        }
                });
        })
        
    $("#newf").click(function(){
            var name = $("#name").val();
            $.ajax({
                    url:"xinjian.php",
                    data:{name:name},
                    type:"POST",
                    dataType:"TEXT",
                    success: function(data){
                            window.location.href = "test.php";
                        }
                });
        })
    </script>

    删除处理页面

    <?php
    $lj = $_POST["lj"];
    unlink($lj);

    添加处理页面

    <?php
    session_start();
    $name = $_POST["name"];
    
    $url = $_SESSION["url"];
    
    $filename = $url."/".$name;
    
    touch($filename);
  • 相关阅读:
    ZOJ 3795 Grouping
    ZOJ 3791 An Easy Game
    ZOJ 3790 Consecutive Blocks
    POJ 1451 T9
    POJ 1141 Brackets Sequence
    POJ 2411 Mondriaan's Dream
    POJ 2513 Colored Sticks
    Eclipse 快捷键大全
    C# lock关键字(多线程)
    C# 内部类
  • 原文地址:https://www.cnblogs.com/xingyue1988/p/6289474.html
Copyright © 2011-2022 走看看