php文件管理与基础功能的实现

文件的基本操作

先来看一下PHP文件基础操作,请看强大注释

<body>
<?php
var_dump(filetype("./img/11.png"));
//判断返回得是文件还是目录,返回sile为文件,dir为目录(文件夹)

var_dump(is_dir("./img/11.png"));
//判断给的文件是不是一个目录,目录为ture,文件为false

var_dump(is_file("./img"));
//判断是否为文件,同上

var_dump(date("Y-m-d H:i:s",fileatime("./img/11.png")));
//上次访问时间

var_dump(date("Y-m-d H:i:s",filectime("./img/11.png")));
//创建时间
var_dump(date("Y-m-d H:i:s",filemtime("./img/11.png")));
//修改时间

var_dump(filesize("./img/11.png"));
//获取文件大小

var_dump(file_exists("/QQPCMgr/www/wenjian/img/22.png"));
//在php里面根/则是磁盘

echo $_SERVER['DOCUMENT_ROOT'];
//获取到服务器根路径

echo basename("/QQPCMgr/www/wenjian/img/22.png");
//返回22.png带后缀的文件名

echo basename("/QQPCMgr/www/wenjian/img/22.png",".png");
//扔上后缀之后只显示文件名(获取文件名)

echo dirname("/QQPCMgr/www/wenjian/img/22.png");
//返回的是不包含文件名的路径(获取文件名以上的)

var_dump(pathinfo("/QQPCMgr/www/wenjian/img/22.png"));
//这个获取的很全面,都能获取到

echo realpath("./img/11.png");
//真实路径:可以把相对路径转换为绝对路径

var_dump(glob("./ce/*"));
//取到这个文件夹里所有的文件,加后缀为条件

 ?>
<!--<img src="/wenjian/img/11.png" />-->
<!--在网页里根/代表的是www目录-->
</body>

文件整体操作:

 

<?php
//touch("./11.txt");
//创建文件

//copy("11.txt","./ce/11.txt");
//复制文件

//unlink("./11.txt");
//删除文件

//echo file_get_contents("./ce/11.txt");本地
//echo file_get_contents("http://www.baidu.com");远程
//读取文件所有内容

//file_put_contents("./11.txt","Myshao");
//往文件里面存储内容

//readfile("./11.txt");
//读取并输出

//$arr = file("./shouye.php");
//var_dump($arr);
//读取文件内所有内容,并扔到数组显示

//$ff = fopen("./11.txt","a");
//打开文件资源,详情见注1;

//echo fgetc($ff);
//读取一个字符
//echo fgets($ff);
//读取一行字符
//echo fread($ff,2);
//规定读多长
//fwrite($ff,"shao");
//写入内容

注1:打开和读取文件

php使用fopen()函数的方式,语法结构如下

Resource fopen (string $filename,string $mode) Filename是目标文件名,打开本地文件也可以打开远程文件,打开远程文件需要采用http://...形式,假如目标文件在

ftp服务器上,则采用形式ftp://...。

参数mode是目标文件打开形式,参数$mode是可以接收的模式。

文件打开方式表:


目录资源的打开与关闭:但凡有开就有关,否则会影响到后面的删除等操作;

 

<?php

$fname = "./ce/gf";
$d = opendir($fname);
//打开文件资源
while ($url = readdir($d))
{
    echo $fname."/".$url."<br/>";
//    仅读取文件名,把路径拼上=完整路径
}
var_dump(glob("./*"));

closedir($d);
//关资源

 

以上就是一些基础的语句了,来做点练习:

例:返回一个文件夹下的所有文件数量;

如果想要计算出ajax目录下有多少的文件,可以用下面封装的方法shu()来遍历目录,可以计算出ce目录下其他的文件夹里面的文件的总和,

 

<?php
function shu($url)
{
    $sl = 0;
    $arr = glob($url);
    //循环遍历
    foreach($arr as $v)
    {
        //判断是不是一个文件
        if(is_file($v))
        {
            //如果是一个文件+1
            $sl++;
        }
        else
        {
            $sl +=shu($v."/*");
        }
    }
    return $sl;
}
echo shu("./ce/*");
//最后给方法一个路径进行查找


?> 

看一下输出:

再来一个!

例:删除文件

 

<?php
$fname = "./ce/gf";
$d = opendir($fname);
//打开文件资源
while ($url = readdir($d))
{
    echo $fname."/".$url."<br/>";
//    仅读取文件名,把路径拼上=完整路径
}
var_dump(glob("./*"));

closedir($d);
//关资源

//删除文件夹(非空文件夹)
function shan($url)
{
//    清空文件夹
    $d = opendir($url);
//    打开
    while ($u = readdir($d))//$u现在是文件名
    {
//        排除...
        if($u!="." && $u!="..")
        {
            $fname = $url . "/" . $u;
            //完整带路径的文件名
            if (is_file($fname))//如果是一个文件
            {
                unlink($fname);
            } else //如果是一个文件夹
            {
                shan($fname);
            }
        }
    }
    closedir($d);
    //关闭

    rmdir($url);
}
shan("./122");


?>

这样122目录里面所有的东西,不管是文件夹还是文件都会被删除;

 

实现文件管理功能

1.先把查看文件的功能做出来,让他把所有的文件与文件夹啊显示出来;

 

<body>
<?php
//定义文件目录
$fname = "./ce";

//便利目录下的所有文件显示
$arr = glob($fname."/*");

foreach ($arr as $v)
{
    //从完整路径中取文件名
   $name = basename($v);
    echo "<div class='item' url='{$v}'>{$name}</div>";
}
?>

</body>

 

图:

接下来给文件夹特殊显示一下把:

输出之前需要判断,判断是不是一个文件夹:

 

//从完整路径中取文件名
   $name = basename($v);
   if(is_dir($v)){
       echo "<div class='item dir' url='{$v}'>{$name}</div>";
   }
   else {
       echo "<div class='item' url='{$v}'>{$name}</div>";
   }

 

如果是个文件夹,给他背景颜色改变一下就好啦

图:

2.给文件夹添加双击事件:

双击实现进入这个目录;

 js代码:

<script>
    $(".dir").dblclick(function(){
        var url = $(this).attr("url");
        $.ajax({
            url:"chuli.php",
            data:{url:url},
            type:"POST",
            dataType:"TEXT",
            success:function(data)
            {

                window.location.href="wenwen.php";

            }

        });
    })
</script>

 

处理页面:

 

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

这样就可以实现双击进入此文件夹:

3.返回上一级,找到上一级目录,写个div

 

$pname = dirname($fname);
echo "<div id='shang' url='{$pname}'>返回上一级</div>";

图:

写双击事件:

 

<script>
 $("#shang").dblclick(function(){
        var url = $(this).attr("url");
        $.ajax({
            url:"chuli.php",
            data:{url:url},
            type:"POST",
            dataType:"TEXT",
            success:function(data)
            {
                window.location.href="wenwen.php";
            }
        });
    })
</script>

 

返回到文件目录后使其隐藏:

 

//上一级的目录
$pname = dirname($fname);
if(realpath($fname)=="F:\QQPCMgr\WWW\wenjian")
{}
else {
    echo "<div id='shang' url='{$pname}'>返回上一级</div>";
}

 

这样的话当我返回到wenjian目录的时候,使其隐藏:

4.删除功能

在文件div里面加删除按钮:

 

 echo "<div class='item' url='{$v}'>{$name}
<input type='button' value='删除' url='{$v}' class='sc'/>
</div>";

 

来写按钮的点击事件:

js代码:

 

$(".sc").click(function(){
            //确认删除提示
            var av = confirm("确定要删除");
            if(av){
            var url = $(this).attr("url");
            $.ajax({
                url: "shan.php",
                data: {url: url},
                type: "POST",
                dataType: "TEXT",
                success: function (data) {
                    window.location.href = "wenwen.php";

                }

            });
            }
        })

 

删除的处理页面:

 

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

 

这样完成后,当我点击删除:

 

再点击确定,即可删除

总代码:

管理查看页面:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script src="jquery-1.11.2.min.js"></script>
    <style>
        .item{
            width: 500px; height: 30px; border: 1px solid slateblue;
            background-color: aquamarine;
            line-height: 30px;
        }
        .dir{
            background-color: chocolate; color: aliceblue;
        }
        #shang{
             500px; height: 30px; border: 1px solid slateblue;
            background-color: brown;color: aliceblue;
            line-height: 30px;
        }
    </style>
</head>
<body>
<?php
session_start();
//定义文件目录
$fname = "./ce";
if(!empty($_SESSION["fname"]))
{
    //如果session里面的不为空
    $fname = $_SESSION["fname"];
}
//上一级的目录
$pname = dirname($fname);
if(realpath($fname)=="F:\QQPCMgr\WWW\wenjian")
{}
else {
    echo "<div id='shang' url='{$pname}'>返回上一级</div>";
}
//便利目录下的所有文件显示
$arr = glob($fname."/*");

foreach ($arr as $v)
{
    //从完整路径中取文件名
   $name = basename($v);
   if(is_dir($v)){
       echo "<div class='item dir' url='{$v}'>{$name}</div>";
   }
   else {
       echo "<div class='item' url='{$v}'>{$name}
<input type='button' value='删除' url='{$v}' class='sc'/>
</div>";
   }
}
?>
 

<script>
    $(".dir").dblclick(function(){
        var url = $(this).attr("url");
        $.ajax({
            url:"chuli.php",
            data:{url:url},
            type:"POST",
            dataType:"TEXT",
            success:function(data)
            {

                window.location.href="wenwen.php";

            }

        });
    })
    $("#shang").dblclick(function(){
        var url = $(this).attr("url");
        $.ajax({
            url:"chuli.php",
            data:{url:url},
            type:"POST",
            dataType:"TEXT",
            success:function(data)
            {
                window.location.href="wenwen.php";

            }

        });
    })

        $(".sc").click(function(){
            //确认删除提示
            var av = confirm("确定要删除");
            if(av){
            var url = $(this).attr("url");
            $.ajax({
                url: "shan.php",
                data: {url: url},
                type: "POST",
                dataType: "TEXT",
                success: function (data) {
                    window.location.href = "wenwen.php";

                }

            });
            }
        })
</script>
</body>
</html>
View Code

处理:

 

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

删除:

 

<?php
$url = $_POST["url"];
unlink($url);
原文地址:https://www.cnblogs.com/xuan584521/p/6592348.html