查看: 1955|回复: 0

[PHP学习] php实现文件管理与基础功能操作

发表于 2018-2-7 08:00:03

文件的基本操作

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

  1. <body>
  2. <?php
  3. var_dump(filetype("./img/11.png"));
  4. //判断返回得是文件还是目录,返回sile为文件,dir为目录(文件夹)
  5. var_dump(is_dir("./img/11.png"));
  6. //判断给的文件是不是一个目录,目录为ture,文件为false
  7. var_dump(is_file("./img"));
  8. //判断是否为文件,同上
  9. var_dump(date("Y-m-d H:i:s",fileatime("./img/11.png")));
  10. //上次访问时间
  11. var_dump(date("Y-m-d H:i:s",filectime("./img/11.png")));
  12. //创建时间
  13. var_dump(date("Y-m-d H:i:s",filemtime("./img/11.png")));
  14. //修改时间
  15. var_dump(filesize("./img/11.png"));
  16. //获取文件大小
  17. var_dump(file_exists("/QQPCMgr/www/wenjian/img/22.png"));
  18. //在php里面根/则是磁盘
  19. echo $_SERVER['DOCUMENT_ROOT'];
  20. //获取到服务器根路径
  21. echo basename("/QQPCMgr/www/wenjian/img/22.png");
  22. //返回22.png带后缀的文件名
  23. echo basename("/QQPCMgr/www/wenjian/img/22.png",".png");
  24. //扔上后缀之后只显示文件名(获取文件名)
  25. echo dirname("/QQPCMgr/www/wenjian/img/22.png");
  26. //返回的是不包含文件名的路径(获取文件名以上的)
  27. var_dump(pathinfo("/QQPCMgr/www/wenjian/img/22.png"));
  28. //这个获取的很全面,都能获取到
  29. echo realpath("./img/11.png");
  30. //真实路径:可以把相对路径转换为绝对路径
  31. var_dump(glob("./ce/*"));
  32. //取到这个文件夹里所有的文件,加后缀为条件
  33. ?>
  34. <!--<img src="/wenjian/img/11.png" />-->
  35. <!--在网页里根/代表的是www目录-->
  36. </body>
复制代码

文件整体操作:

  1. <?php
  2. //touch("./11.txt");
  3. //创建文件
  4. //copy("11.txt","./ce/11.txt");
  5. //复制文件
  6. //unlink("./11.txt");
  7. //删除文件
  8. //echo file_get_contents("./ce/11.txt");本地
  9. //echo file_get_contents("http://www.baidu.com");远程
  10. //读取文件所有内容
  11. //file_put_contents("./11.txt","Myshao");
  12. //往文件里面存储内容
  13. //readfile("./11.txt");
  14. //读取并输出
  15. //$arr = file("./shouye.php");
  16. //var_dump($arr);
  17. //读取文件内所有内容,并扔到数组显示
  18. //$ff = fopen("./11.txt","a");
  19. //打开文件资源,详情见注1;
  20. //echo fgetc($ff);
  21. //读取一个字符
  22. //echo fgets($ff);
  23. //读取一行字符
  24. //echo fread($ff,2);
  25. //规定读多长
  26. //fwrite($ff,"shao");
  27. //写入内容
复制代码

注1:打开和读取文件

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

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

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

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

文件打开方式表:

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

  1. <?php
  2. $fname = "./ce/gf";
  3. $d = opendir($fname);
  4. //打开文件资源
  5. while ($url = readdir($d))
  6. {
  7. echo $fname."/".$url."<br/>";
  8. // 仅读取文件名,把路径拼上=完整路径
  9. }
  10. var_dump(glob("./*"));
  11. closedir($d);
  12. //关资源
复制代码

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

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

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

  1. <?php
  2. function shu($url)
  3. {
  4. $sl = 0;
  5. $arr = glob($url);
  6. //循环遍历
  7. foreach($arr as $v)
  8. {
  9. //判断是不是一个文件
  10. if(is_file($v))
  11. {
  12. //如果是一个文件+1
  13. $sl++;
  14. }
  15. else
  16. {
  17. $sl +=shu($v."/*");
  18. }
  19. }
  20. return $sl;
  21. }
  22. echo shu("./ce/*");
  23. //最后给方法一个路径进行查找
  24. ?>
复制代码

看一下输出:

再来一个!

例:删除文件

  1. <?php
  2. $fname = "./ce/gf";
  3. $d = opendir($fname);
  4. //打开文件资源
  5. while ($url = readdir($d))
  6. {
  7. echo $fname."/".$url."<br/>";
  8. // 仅读取文件名,把路径拼上=完整路径
  9. }
  10. var_dump(glob("./*"));
  11. closedir($d);
  12. //关资源
  13. //删除文件夹(非空文件夹)
  14. function shan($url)
  15. {
  16. // 清空文件夹
  17. $d = opendir($url);
  18. // 打开
  19. while ($u = readdir($d))//$u现在是文件名
  20. {
  21. // 排除...
  22. if($u!="." && $u!="..")
  23. {
  24. $fname = $url . "/" . $u;
  25. //完整带路径的文件名
  26. if (is_file($fname))//如果是一个文件
  27. {
  28. unlink($fname);
  29. } else //如果是一个文件夹
  30. {
  31. shan($fname);
  32. }
  33. }
  34. }
  35. closedir($d);
  36. //关闭
  37. rmdir($url);
  38. }
  39. shan("./122");
  40. ?>
复制代码

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

实现文件管理功能

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

  1. <body>
  2. <?php
  3. //定义文件目录
  4. $fname = "./ce";
  5. //便利目录下的所有文件显示
  6. $arr = glob($fname."/*");
  7. foreach ($arr as $v)
  8. {
  9. //从完整路径中取文件名
  10. $name = basename($v);
  11. echo "<div class='item' url='{$v}'>{$name}</div>";
  12. }
  13. ?>
  14. </body>
复制代码

图:

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

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

  1. //从完整路径中取文件名
  2. $name = basename($v);
  3. if(is_dir($v)){
  4. echo "<div class='item dir' url='{$v}'>{$name}</div>";
  5. }
  6. else {
  7. echo "<div class='item' url='{$v}'>{$name}</div>";
  8. }
复制代码

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

图:

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

双击实现进入这个目录;

js代码:

  1. <script>
  2. $(".dir").dblclick(function(){
  3. var url = $(this).attr("url");
  4. $.ajax({
  5. url:"chuli.php",
  6. data:{url:url},
  7. type:"POST",
  8. dataType:"TEXT",
  9. success:function(data)
  10. {
  11. window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
  12. }
  13. });
  14. })
  15. </script>
复制代码

处理页面:

  1. <?php
  2. session_start();
  3. $url = $_POST["url"];
  4. $_SESSION["fname"] = $url;
复制代码

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

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

  1. $pname = dirname($fname);
  2. echo "<div id='shang' url='{$pname}'>返回上一级</div>";
复制代码

图:

写双击事件:

  1. <script>
  2. $("#shang").dblclick(function(){
  3. var url = $(this).attr("url");
  4. $.ajax({
  5. url:"chuli.php",
  6. data:{url:url},
  7. type:"POST",
  8. dataType:"TEXT",
  9. success:function(data)
  10. {
  11. window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
  12. }
  13. });
  14. })
  15. </script>
复制代码

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

  1. //上一级的目录
  2. $pname = dirname($fname);
  3. if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian")
  4. {}
  5. else {
  6. echo "<div id='shang' url='{$pname}'>返回上一级</div>";
  7. }
复制代码

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

4.删除功能

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

  1. echo "<div class='item' url='{$v}'>{$name}
  2. <input type='button' value='删除' url='{$v}' class='sc'/>
  3. </div>";
复制代码

来写按钮的点击事件:

js代码:

  1. $(".sc").click(function(){
  2. //确认删除提示
  3. var av = confirm("确定要删除");
  4. if(av){
  5. var url = $(this).attr("url");
  6. $.ajax({
  7. url: "shan.php",
  8. data: {url: url},
  9. type: "POST",
  10. dataType: "TEXT",
  11. success: function (data) {
  12. window.location.href = "wenwen.php";
  13. }
  14. });
  15. }
  16. })
复制代码

删除的处理页面:

  1. <?php
  2. $url = $_POST["url"];
  3. unlink($url);
复制代码

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

再点击确定,即可删除

总代码:

管理查看页面:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. <script src="jquery-1.11.2.min.js"></script>
  7. <style>
  8. .item{
  9. width: 500px; height: 30px; border: 1px solid slateblue;
  10. background-color: aquamarine;
  11. line-height: 30px;
  12. }
  13. .dir{
  14. background-color: chocolate; color: aliceblue;
  15. }
  16. #shang{
  17. width: 500px; height: 30px; border: 1px solid slateblue;
  18. background-color: brown;color: aliceblue;
  19. line-height: 30px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <?php
  25. session_start();
  26. //定义文件目录
  27. $fname = "./ce";
  28. if(!empty($_SESSION["fname"]))
  29. {
  30. //如果session里面的不为空
  31. $fname = $_SESSION["fname"];
  32. }
  33. //上一级的目录
  34. $pname = dirname($fname);
  35. if(realpath($fname)=="F:\\QQPCMgr\\WWW\\wenjian")
  36. {}
  37. else {
  38. echo "<div id='shang' url='{$pname}'>返回上一级</div>";
  39. }
  40. //便利目录下的所有文件显示
  41. $arr = glob($fname."/*");
  42. foreach ($arr as $v)
  43. {
  44. //从完整路径中取文件名
  45. $name = basename($v);
  46. if(is_dir($v)){
  47. echo "<div class='item dir' url='{$v}'>{$name}</div>";
  48. }
  49. else {
  50. echo "<div class='item' url='{$v}'>{$name}
  51. <input type='button' value='删除' url='{$v}' class='sc'/>
  52. </div>";
  53. }
  54. }
  55. ?>
  56. <script>
  57. $(".dir").dblclick(function(){
  58. var url = $(this).attr("url");
  59. $.ajax({
  60. url:"chuli.php",
  61. data:{url:url},
  62. type:"POST",
  63. dataType:"TEXT",
  64. success:function(data)
  65. {
  66. window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
  67. }
  68. });
  69. })
  70. $("#shang").dblclick(function(){
  71. var url = $(this).attr("url");
  72. $.ajax({
  73. url:"chuli.php",
  74. data:{url:url},
  75. type:"POST",
  76. dataType:"TEXT",
  77. success:function(data)
  78. {
  79. window.location.href="wenwen.php" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;
  80. }
  81. });
  82. })
  83. $(".sc").click(function(){
  84. //确认删除提示
  85. var av = confirm("确定要删除");
  86. if(av){
  87. var url = $(this).attr("url");
  88. $.ajax({
  89. url: "shan.php",
  90. data: {url: url},
  91. type: "POST",
  92. dataType: "TEXT",
  93. success: function (data) {
  94. window.location.href = "wenwen.php";
  95. }
  96. });
  97. }
  98. })
  99. </script>
  100. </body>
  101. </html>
复制代码

处理:

  1. <?php
  2. session_start();
  3. $url = $_POST["url"];
  4. $_SESSION["fname"] = $url;
复制代码

删除:

  1. <?php
  2. $url = $_POST["url"];
  3. unlink($url);
复制代码

以上所述是小编给大家介绍的php实现文件管理与基础功能操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对程序员之家网站的支持!

您可能感兴趣的文章:

  • PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
  • PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
  • php打包网站并在线压缩为zip
  • 基于PHP实现等比压缩图片大小
  • php简单创建zip压缩文件的方法
  • php gd等比例缩放压缩图片函数
  • php文件管理基本功能简单操作
  • PHP文件管理之实现网盘及压缩包的功能操作


回复

使用道具 举报