PHP操作文件和目录
迪丽瓦拉
2025-05-31 06:19:31
0

PHP操作文件和目录

  • 一、目录处理
      • 1.1 目录信息查询
      • 1.2 目录操作
  • 二、文件处理
      • 2.1 查询文件信息
      • 2.2 文件操作
      • 2.3 文件的上传
          • 1. 文件上传配置
          • 2. 单文件上传表单
          • 3. 多文件上传表单
          • 4. 全局变量$file
          • 5. 文件上传后端代码
      • 2.4 文件的下载
          • 1. 链接下载
          • 2.函数下载


一、目录处理

如下图所示,当前的工作目录是C:\Users\YK\Desktop\PHP_web\code\exercise\dir

在这里插入图片描述

1.1 目录信息查询

  1. is_dir(dir):查看dir) : 查看dir):查看dir是不是目录(判断当前工作目录下是否有$dir这个目录)
  2. dirname(file):查看file):查看file):查看file文件工作的相对目录(判断当前工作目录下的文件的相对目录路径)
  3. realpath(file):查看file):查看file):查看file文件工作的绝对目录(判断当前工作目录下的文件的绝对路径)
  4. getcwd():查看当前运行文件工作的绝对目录
  5. phpinfo():获取详细信息

如下是代码执行结果:
在这里插入图片描述

1.2 目录操作

  1. chdir():更改当前工作目录(getcwd():显示当前工作目录)
  2. mkdir():创建工作目录
    在这里插入图片描述

如下是代码显示结果:
在这里插入图片描述

  1. rmdir():删除目录,要求删除的目录下无任何的文件
  2. opendir(dir):打开dir):打开dir):打开dir目录
  3. readdir(dir):读取dir):读取dir):读取dir目录信息
    6closedir(dir):关闭dir):关闭dir):关闭dir目录
echo $file . PHP_EOL;$file = readdir($dirhandel); //每次读取一个
}
closedir($dirhandel);

在这里插入图片描述

二、文件处理

2.1 查询文件信息

  1. is_file($file):文件是不是有效文件
  2. file_exits($file):文件是否存在
  3. fileatime($file):文件最后一次被修改的时间
  4. fileperms($file):文件的权限
echo '1.txt不是正常文件' . PHP_EOL;die();
}
if(file_exists($file))
{echo '1.txt文件存在' .PHP_EOL;
}
echo date('Y-m-d H:i:s', fileatime($file)) . PHP_EOL; //文件最后一次被修改的时间echo fileperms($file);

如下是代码运行结果:
在这里插入图片描述

2.2 文件操作

  1. fopen():打开文件
    在这里插入图片描述

一般就使用前两个参数

  1. fwrite(fp,fp,fp,string,$length):写数据到文件,(length可选,代表写入文件的长度)
  2. fgetc($fp):每次读取一个字符
  3. fgets($fp):每次读取一行字符
  4. readline(fp,fp,fp,length):读取length长度的字符
  5. file($fp):读取整个文件:
echo $word;$word = fgetc($fp);  //读取一个单词
}
fclose($fp); //关闭文件
echo PHP_EOL;$fp = fopen('1.txt', 'r'); //以读的形式打开1.txt文件
$line = fgets($fp);  //读取一行
while ($line !== false)  //判断是否读到文件末尾
{echo $line;$line = fgets($fp);  //读取一个单词
}
fclose($fp); //关闭文件echo file('1.txt');  //直接读取整个文件,以数组形式展示

如下是运行结果:
在这里插入图片描述

  • unlink($file) :删除文件

2.3 文件的上传

1. 文件上传配置

文件上传配置,如下是最常见的文件上传配置:(在php.ini文件中进行相应的配置)
在这里插入图片描述

2. 单文件上传表单

支持文件上传的表单, $_FILES
单文件上传

如上提交表单后,交给uploads.php文件进行处理

3. 多文件上传表单


多文件上传


如上提交表单后,交给uploads.php文件进行处理

4. 全局变量$file

在这里插入图片描述

5. 文件上传后端代码
%s
",print_r($_FILES)); if(isset($_FILES['my_pic'])) {$name = $_FILES['my_pic']['name'];$tmpName = $_FILES['my_pic']['tmp_name'];$error = $_FILES['my_pic']['error'];if($error > 0) {$tips = '上传失败!
';switch ($error) {case 1:$tips .= '大小超过了php.ini中的允许上传的文件大小';break;case 2:$tips .= '大小超过了表单中(MAX_FILE_SIZE)的允许上传的文件大小';break;case 3:$tips .= '文件只有部分被上传';break;case 4:$tips .= '没有文件被上传';break;case 6:$tips .= '找不到临时目录';break;case 7:$tips .= '文件写入失败,请检查目录权限';break;}echo "

$tips

";}else{if(is_uploaded_file($tmpName)){$allow = ['txt'];// 扩展名$ext = pathinfo($name)['extension'];if(is_array($ext,$allow)){$path = 'uploads/';$path .= md5($name) . '.' . $ext;if(move_uploaded_file($tmpName,$path)){echo "

文件上传成功

";}else{echo "

文件上传失败

";}}else{echo "

后缀名错误

";}}else{echo "

上传方式错误

";}} } else {echo "

文件没有上传成功

"; } ?> 支持文件上传的表单, $_FILES
单文件上传

如上所示,文件上传后交给本文件进行处理

2.4 文件的下载

1. 链接下载


下载


点击进行下载 


在这里插入图片描述

两个文件在同一个目录下面,直接通关a标签进行下载

2.函数下载

如下代码进行文件的下载,

    header('HTTP/1.1 404 NOT FOUND');  
} else {    //以只读和二进制模式打开文件   $file = fopen ( $file_dir . $file_name, "rb" ); //告诉浏览器这是一个文件流格式的文件    Header ( "Content-type: application/octet-stream" ); //请求范围的度量单位  Header ( "Accept-Ranges: bytes" );  //Content-Length是指定包含于请求或响应中数据的字节长度    Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );  //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。Header ( "Content-Disposition: attachment; filename=" . $file_name );    //读取文件内容并直接输出到浏览器echo fread ( $file, filesize ( $file_dir . $file_name ) );    fclose ( $file ); //打开的时候要进行关闭这个文件exit (); 
}

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...