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'];
		//获取到服务器根路径
		echobasename("/QQPCMgr/www/wenjian/img/22.png");
		//返回22.png带后缀的文件名
		echobasename("/QQPCMgr/www/wenjian/img/22.png",".png");
		//扔上后缀之后只显示文件名(获取文件名)
		echodirname("/QQPCMgr/www/wenjian/img/22.png");
		//返回的是不包含文件名的路径(获取文件名以上的)
		var_dump(pathinfo("/QQPCMgr/www/wenjian/img/22.png"));
		//这个获取的很全面,都能获取到
		echorealpath("./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是可以接收的模式。

文件打开方式表:

在这里插入图片描述

目录资源的打开与关闭:

但凡有开就有关,否则会影响到后面的删除等操作;

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

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

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

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

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

例:删除文件

<?php
	$fname="./ce/gf";
	$d= opendir($fname);
	//打开文件资源
	
	while($url= readdir($d)) {
		echo$fname."/".$url."<br/>";
		// 仅读取文件名,把路径拼上=完整路径
	}
	var_dump(glob("./*"));
	closedir($d);
	//关资源
	
	//删除文件夹(非空文件夹)
	functionshan($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目录里面所有的东西,不管是文件夹还是文件都会被删除;

实现文件管理功能

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

<body>
	<?php
		//定义文件目录
		$fname="./ce";
		//便利目录下的所有文件显示
		$arr=glob($fname."/*");
		foreach($arras$v) {
			//从完整路径中取文件名
			$name=basename($v);
			echo"<p class='item' url='{$v}'>{$name}</p>";
		}
	?>
</body>

图:
在这里插入图片描述

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

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

如果是个文件夹,给他背景颜色改变一下就好了
图:
在这里插入图片描述

给文件夹添加双击事件:双击实现进入这个目录;

JS代码:

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

处理页面:

session_start();
$url=$_POST["url"];
$_SESSION["fname"] =$url;
返回上一级,找到上一级目录,写个p
$pname= dirname($fname);
echo"<p id='shang' url='{$pname}'>返回上一级</p>";
写双击事件:
<script>
	$("#shang").dblclick(function(){
		varurl = $(this).attr("url");
		$.ajax({
			url:"chuli.php",
			data:{url:url},
			type:"POST",
			dataType:"TEXT",
			success:function(data)
			{
				window.location.href="wenwen.php"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow";
			}
		});
	})
</script>
返回到文件目录后使其隐藏:
	//上一级的目录
	$pname= dirname($fname);
	if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian"){

	} else {
		echo"<p id='shang' url='{$pname}'>返回上一级</p>";
	}

这样的话当我返回到wenjian目录的时候,使其隐藏:
在这里插入图片描述

删除功能

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

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

在这里插入图片描述
来写按钮的点击事件:

JS代码
$(".sc").click(function(){
	//确认删除提示
	varav = confirm("确定要删除");
	if(av){
		varurl = $(this).attr("url");
		$.ajax({
			url:"shan.php",
			data: {url: url},
			type:"POST",
			dataType:"TEXT",
			success:function(data) {
				window.location.href ="wenwen.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 { width: 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"<p id='shang' url='{$pname}'>返回上一级</p>";
			}
			//便利目录下的所有文件显示
			
			$arr=glob($fname."/*");
			foreach($arras$v) {
				//从完整路径中取文件名
				$name=basename($v);
			 
				if(is_dir($v)){
			  		echo"<p class='item dir' url='{$v}'>{$name}</p>";
			 	} else {
			 		echo"<pclass='item'url='{$v}'>{$name}<input type='button'value='删除'url='{$v}'class='sc'/></p>";
			 	}
			}
		?>
		<script>
		 $(".dir").dblclick(function(){
		  varurl = $(this).attr("url");
		  $.ajax({
		   url:"chuli.php",
		   data:{url:url},
		   type:"POST",
		   dataType:"TEXT",
		   success:function(data)
		   {
		    window.location.href="wenwen.php"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow";
		   }
		  });
		 })
		 $("#shang").dblclick(function(){
		  varurl = $(this).attr("url");
		  $.ajax({
		   url:"chuli.php",
		   data:{url:url},
		   type:"POST",
		   dataType:"TEXT",
		   success:function(data)
		   {
		    window.location.href="wenwen.php"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow";
		   }
		  });
		 })
		  $(".sc").click(function(){
		   //确认删除提示
		   varav = confirm("确定要删除");
		   if(av){
		   varurl = $(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>
处理:
session_start();
$url=$_POST["url"];
$_SESSION["fname"] =$url;
删除:
$url=$_POST["url"];
unlink($url);
posted @ 2025-05-07 12:56  Dy大叔  阅读(39)  评论(0)    收藏  举报