文件操作

内存和硬盘的概念:内存就好比人的大脑,硬盘就好比我们要记的东西。写入文件就是把内存处理好的东西存到硬盘里面。
图片.png

readfile file file_get_contents file_put_contents fputs

图片.png

  1. <?php
  2. $fp=fopen('a.txt','r+');//r是以读的方式打开 r+是以读写的方式打开,可以读可以写(覆盖写)w是以写的方式打开没有读,文件不存在会创建,w+就让你读了 如果以a模式打开,在原有基础上累加写, a+模式就让你读。
  3. //var_dump($fp);//返回的是一个资源
  4. $str='其实恋爱是一门学科';
  5. fwrite($fp, $str);
  6. fseek($fp,0);//把指针移到最前面(文件头)
  7. fread($fp,3);
  8. fclose($fp);
  9. ?>

图片.png
pathinfo(); //返回数组,路径信息
basename();//获取文件名
dirname();//获取文件夹的名字
http_build_query($arr);//将数组变成url参数
parse_url(); //解析url
parse_str();//将字符串解析成多个变量
file_exists();//判断文件是否存在
is_file();//判断是否是文件
is_dir();//是否是文件夹
is_writeable();//是否可写
is_readable();//是否可读
is_executable()://是否可执行
chmod(); //改变权限0777 rwx
图片.png
pathinfo(); //返回数组,路径信息
图片.png
basename();//获取文件名
图片.png
图片.png

dirname();//获取文件夹的名字
图片.png
http_build_query($arr);//将数组变成url参数
图片.png

parse_url(); //解析url(parse就是解析分析的意思)
图片.png
parse_str();//将字符串解析成多个变量
图片.png
图片.png
file_exists();//判断文件是否存在
图片.png
is_file();//判断是否是文件
图片.png
is_dir();//是否是文件夹
is_writeable();//是否可写
is_readable();//是否可读
is_executable()://是否可执行
chmod(); //改变权限0777 rwx

  1. 1mkdir()//创建文件夹
  2. 若要创建 test/a/b/c
  3. mkdir('test/a/b/c', 0777, ture); //第二个参数写权限,第三个ture表示递归创建
  4. 2rmdir()//删除文件夹(只能删一级目录,多层目录要递归删除)
  5. 3opendir()//返回资源,文件夹读取
  6. eg:
  7. $dir=opendir('test');
  8. echo readdir($dir).'<br />'; //.
  9. echo readdir($dir).'<br />'; //..
  10. echo readdir($dir).'<br />'; //a
  11. 4closedir($dir);//关闭文件夹
  12. 5unlink();//删除文件
  13. 6copy('a.txt','bb.txt');//拷贝文件
  14. 7rename('bb.txt','ab.php');//重命名

图片.png

递归删除目录:

  1. <?php
  2. rm('test');
  3. function rm($path) {//test
  4. //打开目录
  5. $dir=opendir($path);
  6. //跳过两个特殊的命令结构 . 和 ..
  7. readdir($dir);
  8. readdir($dir);
  9. //循环删除
  10. while($newFile=readdir($dir)){
  11. //判断是否是文件还是文件夹,如果是文件,直接删除
  12. $newPath=$path.'/'.$newFile;
  13. if(is_file($newPath)){
  14. unlink($newPath);
  15. }else{
  16. rm($newPath);
  17. }
  18. }
  19. closedir($dir);
  20. rmdir($path);
  21. }
  22. ?>

文件上传

form.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <!-- 文件上传一定要写 enctype="mutipart/form-data" -->
  9. <form action="upload.php" method="post" enctype="mutipart/form-data">
  10. <input type="file" name="file" />
  11. <input type="submit" value="上传" />
  12. </form>
  13. </body>
  14. </html>

upload.php:
https://www.php.net/manual/zh/features.file-upload.errors.php

  1. //判断是否有错误号,查手册 is_upload_file——》文件上传处理——》错误信息说明
  2. <?php
  3. //判断是否有错误号
  4. //var_dump($_FILES);
  5. if($_FILES['file']['error']){
  6. switch($_FILES['file']['error']){
  7. case 1:
  8. $str='上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  9. break;
  10. case 2:
  11. $str='上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
  12. break;
  13. case 3:
  14. $str='文件只有部分被上传';
  15. break;
  16. case 4:
  17. $str='没有文件被上传';
  18. break;
  19. case 6:
  20. $str='找不到临时文件夹';
  21. break;
  22. case 7:
  23. $str='文件写入失败';
  24. break;
  25. }
  26. echo $str;
  27. exit();
  28. }
  29. //判断你准许的文件大小
  30. if($_FILE['file']['size'] > (pow(1024,2)*2)){
  31. exit('文件大小超过准许大小');
  32. }
  33. //判断你准许的MIME类型 文件后缀
  34. $allowMime=['image/png','image/jpeg','image/gif','image/wbmp'];
  35. $allowSubFix=['png','jpeg','gif','wbmp','jpg']; //准许的后缀
  36. $info=pathinfo($_FILES['file']['name']);
  37. $subFix=$info['extension'];
  38. if(!in_array($subFix, $allowSubFix)){
  39. exit('不准许的文件后缀');
  40. }
  41. if(!in_array($_FILES['file']['type'],$allowMime)){
  42. exit('不准许的MIME类型');
  43. }
  44. //拼接上传路径
  45. $path='upload/';
  46. if(!file_exists($path)){
  47. mkdir($path);
  48. }
  49. //文件名随机
  50. $name=uniqid().'.'.$subFix;
  51. //判断是否是上传文件
  52. if(is_upload_file($_FILES['file']['tmp_name'])){
  53. if(move_uploaded_file($_FILES['file']['tmp_name'], $path.$name)){
  54. echo '文件上传成功';
  55. }else{
  56. echo '文件移动失败';
  57. }
  58. }else{
  59. echo '不是上传文件';
  60. exit;
  61. }
  62. ?>