PHP 学习第七课 文件系统

PHP 学习第七课 文件系统

文件系统

文件系统的操作函数:

1、创建文件,touch();

返回值:boolean 成功 true 错误 false

例:touch(./index.php);       //在当前目录下创建一个index.php文件

函数格式:touch(‘文件名’);

2、移动文件:rename();

函数格式:rename('当前文件目录',‘目标文件目录’)

返回值:true or false

注:目标文件目录可以是当前文件目录,也可以是其他的目录,而且目标目录里面的文件名称可以修改。

例:1、rename(‘./index.php’,’../admin/index.php’)

2、rename(‘./index.php’,’../admin.php’);

3、rename(‘./index.php’,’./admin.php’);

3、删除文件:unlink();

返回值:true or false

函数格式:unlink(‘文件名或者文件路径+文件名’);

例: 1、unlink(‘./text.php’);

2、unlink(‘text.php’);

4、复制文件:copy();

返回值:true or false

函数格式:copy(‘原文件名’,’目标文件名’);

例:  copy(‘./admin/images/a.gif’,’./admin/pic/a.gif’);

5、文件打开:fopen()

返回值:成功返回资源,出错返回false

函数格式:fopen(‘文件名或者文件路径+文件名’,’第二个参数代表以什么模式打开’);

例:fopen(./index.php);

6、关闭文件:fclose();

返回值:boolean false

函数格式:fclose($file);

例: $file=fopen(‘./index.php’);//先打开一个文件,返回一个值给$file

fclose($file);         //关闭打开的文件。

7、读取文件:fread();

返回值:返回读取出来的字符串或者出错时返回boolean 型的false

注:读取文件需要先打开才可以,后面详细完整的案例即可看到fread();的函数使用方法。

8、判断文件指针是否在结尾:feof();

返回值:布尔类型的 true or false

9、写入文件:Fwrite();

返回值:返回写入的字符串,出错时返回的布尔型的false

Fopen()函数的打开模式:

R:只读的方式打开

a:追加或者累加的方式打开

重点掌握这两个即可,下面介绍几个其他的参数

R+读写方式打开文件(可以执行部分的写入功能)

W 写入方式打开

W+读写的方式打开(可以执行部分读取功能)

a+增强的追加模式打开(可以执行部分的读取功能)

X 异或方式打开

X+增强的异或模式

 

文件系统操作函数的完整例子:

假设以下所有文件均存在:

<?php

$file=Fopen(‘./demo.php’,’c+’);   //以追加的模式打开当前目录下面的demo.php返回给一个变量$file

Fwrite($file,’这是一个测试文件系统的demo.php文件’);

//$content=Fread($file,1);   //读取被打开的文件,每次读取一个字节返回给//$content

While(!feof($file)){//feof()函数判断文件是否读取到最后,直到最后停止while循环,否则一直读取到文件结尾。

$content=fread($file,1);

Echo $content;

}

Fclose($file);    //操作完毕后关闭文件

?>

复制以上脚本直接运行查看效果!

 

10、返回目录名称:Dirname();

返回值:字符串,一个文件的路径

函数格式:dirname(‘一个路径’);

例: dirname(‘./amdin/index.php’);

11、返回文件名:basename();

返回值:返回字符串(被得到的文件名称)

函数格式:basename(‘一个路径’);

例:basename(‘./demo/php/index.php’);

12、返回文件路径信息:pathinfo();

返回值:数组

函数格式:pathinfo(‘一个要解析的路径’‘第二个参数’);

例:pathinfo(‘./demo/index.php’PATHINFO_BASENAME);

第二个参数包括四个常量:

1、        PATHINFO_DIRNAME:只返回一个目录名称

2、        PATHINFO_BASENAME:只返回一个文件名称

3、        PATHINFO_EXTENSION:只返回文件的后缀名称

4、        PATHINFO_FILENAME:只返回文件的名称,不包括文件的后缀名

13、判断是否是文件:is_file();

返回值:boolen布尔类型(true or false)

函数格式:is_file(‘一个文件路径’);

例如:is_file(‘./demo/pic.jpg’);

14、判断文件或者目录是否存在:file_exists();

返回值:true or false

函数格式:file_exists(‘文件名或者目录’);

例:file_exists(‘./demo/’);   //判断demo目录是否存在

File_exists(‘./demo/pic.jpg’);    //判断demo/pic.jpg文件是否存在

15、判断是否是目录:is_dir();

返回值:true or false

函数格式:is_dir(‘给定的一个文件路径或者文件名称’);

例:is_dir(‘./demo/pic.jpg’);             //返回false

Is_dir(‘./demo/’);    //返回true;

16、创建目录:mkdir();(不能创建多层的目录,仅支持一层目录的创建)

返回值:true or false

函数格式:mkdir(‘要创建的目录名称和路径’,’第二个参数可选,并且在windows 下面无效,默认是0777’);

例:mkdir(‘./demo/test/’);         /创建了一个test文件夹

17、删除目录:rmdir();     (不能删除非空目录)

返回值:true or false

函数格式:rmdir(‘目录的路径’);

例: rmdir(‘./demo/test/’);   //删除demo下面的test/文件夹

18、打开文件目录:opendir();

返回值:resource 资源类型

函数格式:opendir(‘./demo/’);

例:opendir(‘./demo/’);           //打开demo文件夹

19、读取文件夹(从目录句柄中读取条目):readdir();

返回值:成功返回文件名,失败返回false

函数格式:readdir(‘目录路径’);

例:readdir(‘./demo/’);        //读取文件夹demo

20、关闭文件夹(关闭目录句柄):closedir();

函数格式:closedir(‘目录路径’);

例:  closedir(‘./demo/’);      //关闭demo文件夹

 

文件的上传与下载

文件上传的php.ini配置文件的修改地方

1、        file_uploads=on; 开启文件上传功能

2、        upload_max_filesize=2m    控制上传的文件的大小,最大2M

3、        upload_tmp_dir:文件上传的临时文件存放目录

4、        post_max_size:表单上传的大小限制

注意:post_max_size一定要大于upload_max_size的值。

在上传文件的时候html的form表单里面需要添加一个新的属性

 

Enctype=’multipart/form-data’

文件上传要注意以下几点:

1、        注意要修改上传后的文件名称,避免覆盖已经有的文件,及服务器的安全。

2、        控制被上传的文件的大小(节省服务器资源,带宽,硬盘的开销)

3、        注意控制上传的文件类型,例如php,asp,js,exe等文件不能被上传。

 

文件上传的完整实例:(已经封装为函数,直接调用即可)

function Myupload($file_name,$file_type,$file_size,$file_path){

$file=$_FILES[$file_name];

if($file[‘error’]>0){

switch($file[‘error’]){

case 1 :

die(‘您上传的文件过大’);

case 2 :

die(‘您上传的文件还是过大’);

case 3 :

die(‘文件只能被部分上传’);

case 4 :

die(‘文件不能为空’);

default :

die(‘未知的错误’);

}

}

//   $file_type=array(‘image/jpeg’,’image/gif’,’image/png’);

if(!in_array($file[‘type’],$file_type))

die(‘你上传的文件类型不正确’);

//计算图片大小

//   $size=1000000;

if($file[‘size’]>$file_size)

die(‘上传的文件过大’);

//获取后缀名,重新命名文件

$newname=explode(‘.’,$file[‘name’]);

$suffix=array_pop($newname);

$newfile=md5(date(‘YmdHis’)).’.’.$suffix;

//$path=’./upload/’;

if(move_uploaded_file($file[‘tmp_name’],$file_path.$newfile)){

echo ‘文件上传成功’.$file_path.$newfile;

}else{

‘文件上传失败!’;

}

}

$file_name=’file’;

$file_type=array(‘image/png’,’image/jpg’,’image/gif’);

$file_size=10000000;

$file_path=’./upload/images/’;

if(!file_exists($file_path)){

mkdir($file_path);

}

Myupload($file_name,$file_type,$file_size,$file_path);

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据