九、文件与目录
-
判断普通文件和目录
is_file()
:判断给定文件名是否为一个正常的文件is_dir()
:判断给定文件名是否为一个目录
-
文件属性
file_exists()
:检查文件或目录是否存在filesize()
:取的普通文件的大小is_readable()
:判断给定文件名是否可读is_writable()
:判断给定文件名是否可写filectime()
:获取文件的创建时间filemtime()
:获取文件的修改时间fileatime()
:取得文件的上次访问时间stat()
:获取文件大部分的属性值
-
目录的基本操作
basename()
:返回路径中的文件名部分dirname()
:返回路径中的目录部分pathinfo()
:返回文件路径信息opendir()
:打开目录句柄readdir()
:从目录句柄中读取条目,返回目录中下一个文件的文件名rewinddir()
:倒回目录句柄closedir()
:关闭目录句柄mkdir()
:新建目录rmdir()
:删除指定空目录scandir()
:列出指定路径中的文件和目录
-
文件的基本操作
fopen()
:打开文件或 URLfread()
:读取文件fgets()
:从文件指针中读取一行feof()
:测试文件指针是否到了文件结束的位置fwrite()
:写入文件rewind()
:倒回文件指针的位置flock()
:轻便的咨询文件锁定ftruncate()
:将文件截断到给定的长度fclose()
:关闭一个已经打开的文件指针file()
:把整个文件读入到一个数组中copy()
:拷贝文件unlink()
:删除文件file_get_contents()
:将整个文件读入一个字符串file_put_contents()
:将字符串写入文件中rename()
:重命名一个文件或目录readfile()
:读入一个文件并写入到输出缓冲
<?php header('Content-type:text/html,charset=utf-8'); $file = fopen('test.txt','r'); $n = 2; var_dump(fread($file,$n));// 读取 $n 个字节 var_dump(fgets($file));//从上一个字节之后开始读取一行 var_dump(feof($file));//测试文件指针是否到了文件结束的位置 fclose($file); $file = fopen('test.txt','a+'); if(flock($file, 2)){ var_dump(fwrite($file, '加锁状态')); flock($file, LOCK_UN); }else{ echo "加锁失败!"; } ?>
-
文件的上传
- 文件上传的过程是自动的,文件的上传操作是操你个存放上传文件临时目录里将上传的文件移动到需要的地方。
<?php header('Content-type:text/html;charset=utf-8'); var_dump($_FILES); if(isset($_POST['submit'])){ if(is_uploaded_file($_FILES['myfile']['tmp_name'])){//判断文件是否是通过 HTTP POST 上传的 $arr = pathinfo($_FILES['myfile']['name']);//返回文件路径的信息 $nawName = date("YmgGis").rand(1000, 9999); if(!file_exists("uploads")){ //判断文件目录是否存在 mkdir("uploads"); //创建文件目录 } if(move_uploaded_file($_FILES['myfile']['tmp_name'], "uploads/{$nawName}.{$arr['extension']}")){//将上传的文件移动到新位置 echo '上传成功!'; }else{ echo '文件移动失败!'; } }else{ exit(); } } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>上传界面</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type='file' name='myfile' /> <input type="submit" name="submit" value="开始上传" /> </form> </body> </html>
-
文件的下载
- 发送指定的文件的 MIME 类型的头信息
header('Content-type:'MIME类型)
- 指定下载文件的描述
header('Content-Disposition:attachement;filename=文件名称')
- 指定下载文件的大小
header('Content-Length:文件大小')
- 读取文件内容至缓冲区
readfile()
<?php $file = "uploads/20200331532532008.png"; $fileinfo = finfo_open(FILEINFO_MIME_TYPE);//创建一个 fileinfo 资源 $mimeType = finfo_file($fileinfo, $file);//返回文件的 MIME 类型 finfo_close($fileinfo); //发送指定的文件MIME类型 header('Content-type:'.$mimeType); //指定下载文件的描述 header('Content-Disposition:attachement;filename='.basename($file)); //指定下载文件的大小 header('Content-Length:'.filesize($file)); //读取文件内容至缓冲区,返回这个文件 readfile($file); echo "下载成功!"; ?>
- 发送指定的文件的 MIME 类型的头信息