文件的基本操作
先来看一下PHP文件基础操作,请看强大注释
<?phpvar_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/*"));
//取到这个文件夹里所有的文件,加后缀为条件
?>
文件整体操作:<?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."
";// 仅读取文件名,把路径拼上=完整路径}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."
";// 仅读取文件名,把路径拼上=完整路径}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.先把查看文件的功能做出来,让他把所有的文件与文件夹啊显示出来;
{ //从完整路径中取文件名
$name = basename($v); echo "
{$name}
";}?>
图:
接下来给文件夹特殊显示一下把:
输出之前需要判断,判断是不是一个文件夹://从完整路径中取文件名
$name = basename($v); if(is_dir($v)){
echo "
{$name}
";} else {
echo "
{$name}
";}
如果是个文件夹,给他背景颜色改变一下就好啦
图:
2.给文件夹添加双击事件:
双击实现进入这个目录;
js代码:
$(".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";
}
});
})
处理页面:<?phpsession_start ();
$url = $_POST["url"];
$_SESSION["fname"] = $url;
这样就可以实现双击进入此文件夹:
3.返回上一级,找到上一级目录,写个p$pname = dirname($fname);
echo "
返回上一级
";图:
写双击事件:
$("#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";
}
});
})
返回到文件目录后使其隐藏://上一级的目录$pname = dirname($fname);
if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian"){
}else {
echo "
返回上一级
";}
这样的话当我返回到wenjian目录的时候,使其隐藏:
4.删除功能
在文件p里面加删除按钮:echo "
{$name}
";来写按钮的点击事件:
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);
这样完成后,当我点击删除:
再点击确定,即可删除
总代码:
管理查看页面:
无标题文档.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;
}
{ //如果session里面的不为空
$fname = $_SESSION["fname"];
}//上一级的目录$pname = dirname($fname);if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian")
{}else { echo "
返回上一级
";}//便利目录下的所有文件显示$arr = glob($fname."/*");foreach ($arr as $v)
{ //从完整路径中取文件名
$name = basename($v); if(is_dir($v)){ echo "
{$name}
";} else { echo "
{$name}
}
}?>
$(".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";
}
});
}
})
处理:<?php
session_start();
$url = $_POST["url"];
$_SESSION["fname"] = $url;
删除:<?php
$url = $_POST["url"];
unlink($url);