PHP对文件的处理 PHP在服务器端文件的应用上,相关的范畴不仅仅在于用户与服务器资料库间的各种连接存取操作,也可以通过PHP内建的文件处理函数,来进行一般文件处理操作。 basename--返回路径中的文件名部分 语法格式:$path="/home/httpd/html/index.php"; $file=basename($path);//$fileissetto"index.php" $file=basename($path,".php");//$fileissetto"index" pathinfo():分析文件当前路径 语法格式:$path_parts=pathinfo("/www/htdocs/index.html"); echo$path_parts["dirname"]."n";/www/htdocs文件路径 echo$path_parts["basename"]."n";index.html文件与扩展名 echo$path_parts["extension"]."n";html文件格式 文件类型与相关信息 filesize():计算文件的大小(byte) 语法格式:$bytes=filesize(“a.txt”); echo$bytesround($bytes/1024,2); fileatime():文件最后一次访问时间(时间戳) 语法格式:echodate(“Y-m-dg:i:sa”,fileatime); filectime():文件建立时间 语法格式:echodate(“Y-m-dg:i:sa”,filectime); filemtime():文件最后一次更新时间 语法格式:echodate(“Y-m-dg:i:sa”,filemtime); fileperms():文件属性以及权限10进制 语法格式:echosubstr(base_convert(fileperms(a.txt),10,8),3); fileowner():文件所有者的uid(仅在Linux系统下有用) 语法格式:echofileowner(“a.txt”); 文件的操作 'r'只读方式打开,将文件指针指向文件头。 'r+'读写方式打开,将文件指针指向文件头。 'w'写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+'读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'a+'读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'x'创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。此选项被PHP4.3.2以及以后的版本所支持,仅能用于本地文件。 'x+'创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。此选项被PHP4.3.2以及以后的版本所支持,仅能用于本地文件。 fopen()--打开文件或者URL fclose()--关闭一个已打开的文件指针 fread()--读取文件内容 fwrite()--写入文件 语法格式:if(!$f=@fopen("file03.php","x")){//打开一个文件x方法写入 die("文件读取失败");//读取失败 } fwrite($f,"kkkkkkkkkk");//向那个文件写写什么 echofread($f,10);//读取这个文件的内容 fclose($f);关闭打开文件 file()--把整个文件读入一个数组中 语法格式:$arr=file("file03.php"); print_r($arr);//读取文件返回数组 readfile()--读入一个文件并写入到输出缓冲。 语法格式:$str=readfile("file03.php"); echo$str;输出 一个文件记数器的写法: $f=fopen("file03.php","r"); $i=fread($f,1000); echo"这是您第{$i}次访问"; fclose($f); $f=fopen("file03.php","w"); $i++; fwrite($f,$i); fclose($f); ````<BR>file_get_contents()–将整个文件读入一个字符串 <BR>语法格式:file_get_contents(文件名称或URL) file_put_contents()–?将一个字符串写入文件,和依次调用fopen(),fwrite()以及fclose()功能一样 <BR>file_put_contents(文件名称,写入数据) <BR>feof()--测试文件指针是否到了文件结束的位置 <BR>ftell()--返回文件指针读/写的位置 <BR>语法格式ftell(文件指针) <BR>flock()--轻便的咨询文件锁定 <BR>语法格式:flock(文件指针,控制参数) <BR>文件指针:是一个已经打开(fopen)的文件指针控制参数: <BR>“LOCK_SH”表示要取得共享锁定(读取程序),(PHP4.0.1以前版本设置1)。 <BR>“LOCK_EX”表示要取得独占锁定(写入程序),(PHP4.0.1以前版本中设置为2)。 <BR>“LOCK_UN”表示要释放锁定(无论共享或独占),(PHP4.0.1以前版本中设置为3)。 <BR>“LOCK_NB”表示如果你不希望flock()在锁定时堵塞,则给控制参数再加上这个参数 fseek()--在文件指针中定位 <BR>语法结构:fseek(文件指针,移动字元数[,起始位置常数]) <BR>文件指针:不能用于在fopen()中以“http://”或“ftp://”格式打开所返回的文件指针。 <BR>移动字元数:为正数时,将文件指针向前移动指定个数:为负数时,将文件指针向后移动指定个数: <BR>起始位置常数: <BR>SEEK_CUR-设定位置为当前位置。 <BR>SEEK_SET-设定位置等于文件开头。(默认值) <BR>SEEK_END-设定位置为文件尾。 <BR>rewind()--倒回文件指针的位置,也就是将文件指针移向文件的开头位置。 <BR>语法结构:rewind(文件指针) <BR>注意:如果将文件以附加(“a”或者“a+”)模式打开,写入文件的任何数据总是会被附加在后面,不管文件指针的位置 chgrp()--改变文件所属的组 <BR>语法结构:chgrp(文件名称,群组名称) filegroup()--取得文件的组 <BR>语法结构:filegroup(文件名称) chmod()--改变文件模式 <BR>语法结构:chmod(文件名称,权限常数)755666 chown()--改变文件的所有者 <BR>语法结构:chown(文件名称,使用者) fileowner()--取得文件的所有者 <BR>语法结构:fileowner(文件名称) <BR>posix_getpwuid()来将其解析为用户名。 copy()--拷贝文件 <BR>语法结构:copy(来源文件,目的文件) <BR>返回类型:bool型,如果成功则返回TRUE,失败则返回FALSE。 <BR>参数说明:将来源文件拷贝到目的文件。 <BR>unlink()--删除文件 <BR>语法结构:unlink(目标文件) <BR>返回类型:bool型,如果成功则返回TRUE,失败则返回FALSE。 <BR>参数说明:删除指定的目标文件 <BR>rename()--重命名一个文件或目录 <BR>语法结构:rename(旧文件名,新文件名) <BR>返回类型:bool型,如果成功则返回TRUE,失败则返回FALSE。 <BR>参数说明:尝试把旧文件名重命名为新文件名。 文件属性处理 <BR>file_exists()--检查文件或目录是否存在 <BR>语法结构:file_exists(文件名称) <BR>返回类型:bool型,若存在返回true,否则返回false。 <BR>filesize()--取得文件大小 <BR>语法结构:filesize(文件名称) <BR>返回类型:返回文件大小字节数,若出错返回false. <BR>filetype()--取得文件类型 <BR>语法结构:filetype(文件名称) <BR>返回类型:返回文件类型。可能的值有fifo,char,dir,block,link,file和unknown。出错则返回false <BR>is_dir()--判断给定文件名是否是一个目录 <BR>语法结构:is_dir(名称) <BR>返回类型:如果文件名存在并且是一个目录则返回true,否则返回false。 <BR>is_executable()--判断给定文件名是否可执行 <BR>语法结构:is_executable(名称) <BR>返回类型:如果文件存在且可执行则返回TRUE,否则返回FALSE。 <BR>is_file()--判断给定文件名是否为一个正常的文件 <BR>语法结构:is_file(名称) <BR>返回类型:如果文件存在且为正常的文件则返回TRUE。 <BR>is_link()--判断给定文件名是否为一个符号连接 <BR>语法结构:is_link(名称) <BR>返回类型:如果文件存在并且是一个符号连接则返回true。 <BR>is_readable()--判断给定文件名是否可读 <BR>语法结构:is_readable(文件名称) <BR>返回类型:如果文件存在并且可读则返回TRUE。 <BR>is_writable()--判断给定的文件名是否可写 <BR>语法结构:is_writable(文件名称) <BR>返回类型:如果文件存在并且可写则返回TRUE。 <BR>实现iterator接口的目录读取 <BR>Iterator接口的标准方法 <BR>current():返回当前列表(list)中的元素值。 <BR>next():用于在一个列表中向下移动一个位置。 <BR>valid():检测在当前列表中是否还有下一个元素,如果有,返回true,否则返回false。 <BR>rewind():可以访问指定特征的元素列表,在开始操作iterator时,会将指针设置在顶部。 DirectoryIterator自定义的类 <BR>getATime():文件最后访问时间 <BR>getCTime():文件最后的修改时间 <BR>getGroup():文件所属组(仅UNIX) <BR>getInode():文件的节点(仅UNIX) <BR>getOwner():文件的宿主(仅UNIX) <BR>getPerms():访问该文件的权限 <BR>getSize():文件的大小 <BR>getType():文件的类型 <BR>getFileName():文件的名称 <BR>getPath():文件的路径 <BR>isDir():是否是目录 <BR>isExecutable():是否可以执行 <BR>isFile():是否是文件 <BR>isLink():是否是软链接文件 <BR>isReadable():是否可读 <BR>isWritable():是否可写 <BR>isDot()方法分别过滤掉“.”和“..”目录。 <BR>$dname=$_GET["dname"];//获取from表的信息 <BR>if(isset($dname)&&!empty($dname)){//判断变量是否被设置检测一个变量是否为空 <BR>$dir=newDirectoryIterator("{$dname}");//new一个类 <BR>echo$dir->getPath()."//类的方法 <BR>}else{ <BR>$dir=newDirectoryIterator("D:");//newd://目录 <BR>echo$dir->getPath(); <BR>} <BR>$delname=$_GET["del"]; <BR>if(isset($delname)&&!empty($delname)){ <BR>if(unlink("{$dir->getPath()}$delname")) <BR>echo"删除成功"; <BR>} while($dir->valid()){ <BR>if($dir->isDir()) <BR>echo"<ahref='file14.php?dname={$dir->getPath()}{$dir->current()}'>". <BR>"{$dir->current()}</a><br>"; <BR>else <BR>echo"{$dir->current()}<ahref='#'>复制</a>". <BR>"<ahref='file14.php?del={$dir->current()}'>删除</a><br>"; <BR>$dir->next(); <BR>} 范例2:functionshowdir($iter){//设置一个函数方法并赋值 <BR>for(;$iter->valid();$iter->next()){//检测目录是否还有下一个目录想下移动一位 <BR>if($iter->isDir()&&$iter->isDot()){//检测是否是目录并过滤掉.和..目录位置 <BR>echo"目录".$iter->current()."<br>";//指向返回列表元素的值 <BR>}else{ <BR>echo$iter->current().$iter->getSize()."字节<br>";反则返回列表的值并查看文件大小 <BR>} <BR>} <BR>} <BR>showdir(newDirectoryIterator("C:/"));//传参new一个系统默认类 <BR>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PHP文件上传 <BR>与文件系统和服务器的交互 <BR>文件上传`使用目录函数`与文件系统的交互`使用程序执行函数`与环境变量交互 <BR>文件上传 <BR>在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录 <BR>PHP中文件上传的基础知识 <BR>表单提交`对文件的操作 何为文件上传? <BR>为了满足传递文件信息的需要:HTTP协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器上指定目录存放。 HTML规范规定上传文件时表单头必须使用 <BR><html> <BR><head><title>文件上传</title></head> <BR><body> <BR><formaction="todo.php"method="post"enctype="multipart/form-data">//返回值post方式上传表示要上传一个文件 <BR><inputtype="hidden"name="MAX_FILE_SIZE"value="100000"> <BR>上传文件:<inputtype="file"name="userfile"> <BR>提交:<inputtype="submit"value="提交查询"> <BR></form> <BR></body> <BR></html> <BR>注意几个特征属性: <BR>POST方法: <BR>表单最常用的功能,向目标页面传递变量,我们在上传文件的时候,会在表单中设置相应的属性,来完成文件的传递. <BR>enctype="multipart/form-data" <BR>这样服务器就会知道,我们要传递一个文件,这样服务器可以知道上载的文件带有常规的表单信息。 <BR>MAX_FILE_SIZE <BR>此字段必须在文件输入字段之前,控制最大的传递文件的大小(字节)——真的可以控制吗? <BR><inputtype="file"name="userfile"> <BR>设置浏览器文件输入浏览按钮 我们在服务器端的php.ini中设置对表单传递的数据进一步判断 <BR>file_uploads=On/Off是否允许文件上传 <BR>upload_max_filesize=2M上传的文件的最大大小 <BR>post_max_size=8MPOST数据所允许的最大大小 <BR>表单传递的数据,文件只是其中的一部分,所以设置时,upload_max_filesize应该小于post_max_size <BR>超级全局数组$_FILES <BR>PHP程序中,需要处理的上传数据保存在全局数组中$_FILES(超级全局数组) <BR>保存$_FILES数组中的元素,将HTML表单的type="file"标记的名称name="userfile"存放在数组中。 <BR>存储在$_FILES['userfile']['name']中的值是:客户端文件系统的文件的名称 <BR>存储在$_FILES['userfile']['type']中的值是:客户端传递的文件的类型 <BR>存储在$_FILES['userfile']['size']中的值是:文件的字节的大小 <BR>存储在$_FILES['userfile']['tmp_name']中的值:文件被上传后在服务器存储的临时全路径 <BR>``````````````````````````````````````````` <BR>存储在$_FILES['userfile']['error']中的值是:文件上传的错误代码-php4.2以后增加的功能 <BR>存储在$_FILES['userfile']['error']中的值 <BR>值为0:表示没有发生任何错误。 <BR>值为1:表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize。 <BR>值为2:表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。 <BR>值为3:表示文件只被部分上传。 <BR>值为4:表示没有上传任何文件。 <BR> is_uploaded_file()检测是否是上传文件 move_uploaded_file(临时路径/临时文件名,目的路径/目的文件名)函数将存放在临时目录下的上传文件拷贝出来,存放到指定目录的指定文件名,如果目标存在将会被覆盖。 范例:print_r($_FILES["upfile"]);//将表单提交的系统存放在这 echo"文件名字".$_FILES["upfile"]["name"];//文件名字 if($_FILES["upfile"]["error"]<=1){//错误代码小于1大于1表示有错误 echo"请选择文件"; } if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){//检测这个文件是否是上传文件文件的临时路径 echo'是上传文件'; move_uploaded_file($_FILES["upfile"]["tmp_name"],"./upload/".$_FILES["upfile"]["name"]); //将临时文件转移到upload目录文件名为原名 }else{ echo'不是上传文件'; } 文件上传后的临时存放目录 上传的文件被放置到服务器端临时目录:/tmp目录里面命名为一个唯一的,随机生成的临时文件名。注:该文件在程序执行完后将自动被删除掉。在删除前可以像本地文件一样操作。 /tmp目录是默认的上传临时文件存放地点,如果需要更改这个目录:可以编辑/etc/php.ini文件FileUploads段的upload_tmp_dir属性值。 当配置文件php.ini的register_globals属性被设置成on的情况 <inputtype=filename=myfilename> 将生成全局变量:$myfilename等 ``````````````````````````````````````````````` 当需要上传多个文件的情况,有两种实现的解决方法: 使用不同的表单元素 <inputtype=filename=file_a> <inputtype=filename=file_b> 使用数组格式的表单元素 <inputtype=filename=file[1]> <inputtype=filename=file[2]> ````````````````````````````````````````````````` 使用目录函数 opendir?--?打开目录句柄 closedir?--?关闭目录句柄 readdir?--?从目录句柄中读取条目 语法格式:$d=opendir("./upload");//打开这个文件目录 while($s=readdir($d)){//循环输出读取到的条目 echo$s." "; } closedir($d);//关闭句柄 创建和修改目录 mkdir?--?新建目录 rmdir?--?删除目录 mkdir("D:up");//创建一个目录 rmdir("up");//删除一个目录 磁盘操作 disk_free_space():统计某个磁盘的剩余空间 disk_total_space():显示逻辑磁盘的容量 echodisk_free_space("D:")/1024/1024/1024; echodisk_total_space("D:")/1024/1024/1024; getcwd():返回当前脚本所在路径 chdir():类似DOS的cd命令,改变当前路径 echogetcwd();//查看当前脚本路径 chdir("D:");//改变 使用程序执行函数 exec()函数可以将要执行的命令作为参数。 passthru()结果直接输出显示到浏览器。 system()也是直接输出显示到浏览器,但有返回值 phpchana课件
php文件处理.rar (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|