PHPWEB开发技术第八章文件操作函数库与面向对象编程•课题目标:•掌握基本文件操作函数;•学会使用常用的文件函数;•掌握如何上传文件;•了解如何在类中操作文件。•课前回顾PHP里的WEB技术HTTP基础变量状态维持概念服务器信息表单处理---文件的上传sessionCOOKIEPHP操纵文件一般分为五步进行1、打开一个文件以供读写2、从文件中读取数据3、关闭这个文件4、执行操作5、将写入结果输出一、打开文件(fopen()函数)•格式:fopen(stringfilename,stringmode[,booluse_include_path[,resourcezcontext]])?php$fp1=fopen(test.txt,'w');?打开模式说明r只读方式打开,将文件指针指向文件头。r+读写方式打开,将文件指针指向文件头。w只写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。w+读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回false,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。x+创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen(调用失败并返回false,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。a写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。a+读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。b以二进制模式打开,用于与其他模式进行连接。如果文件系统能够区分二进制文件和文本文件,你可能会使用它。Windows系统可以区分,而UNIX则不区分。推荐一直使用这个选项,以便获得最大程度的可移植性。它也是默认的模式。t以文本模式打开,用于与其他模式相结合。这个模式只是Windows系统下的一个选项。它不是推荐选项,除非你曾经在代码中使用了b选项。二、读取文件(file()函数)•格式:•File(“stringfilename”)?php$fp2=file(test.txt);if(!$fp){echo文件打开失败!;}?将文件内容以数组形式存储下来并给出布尔返回值实例?php$fp2=file('text.txt');//读文件if(!$fp2){echo文件没有打开!;}else{foreach($fp2as$lineNum=$lineContents){echoLine#{$lineNum}:.htmlspecialchars($lineContents)./br;}}?三、写入文件(fwrite()函数)我们打开文件时使用ab文件模式,这样就可以保留原有数据。•格式fwrite(resourcehandle,stringstring[,intlength])?php$contents=姓名刘建民性别男;$fp=fopen(test.txt,'ab');fwrite($fp,$contents);?四、关闭文件(fclose函数)•格式•fclose(resourcehandle)?php$contents=姓名刘建民性别男;$fp=fopen(test.txt,'ab');fwrite($fp,$contents);fclose($fp);//关闭文件?文件系统与目录函数•一、函数feoffeof()函数用来判断文件内容流是否抵达了文件末尾?php$fp=fopen(test.txt,'ab');while(!feof($fp)){echofgets($fp,4096);}fclose($fp);?二、函数file_exists•通过file_exists()函数来判断文件或文件夹是否存在,这样在实际应用中可以避免很多错误的产生.?phpif(file_exists(test.txt)){$fp=fopen(test.txt,'ab');while(!feof($fp)){echofgets($fp,4096);}fclose($fp);}?三、函数filesize•格式:filesize(stringfilename)?php//输出类似:somefile.txt:1024bytes$filename='somefile.txt';echo$filename.':'.filesize($filename).'bytes';?第四节文件上传•在PHP中,它支持HTTP方式的文件上传,而非通过FTP软件将客户端文件传送至服务器。很多时候,比如在网上相册的程序、电子邮件附件上传的程序,都需要用到这个功能。一、HTML中构建上传入口htmlxmlns==UTF-8headtitle上传的文件/titlemetahttp-equiv=content-typecontent=text/html;charset=UTF-8/metahttp-equiv=content-languagecontent=UTF-8//headbodyformenctype=multipart/form-dataaction=upload.phpmethod=post选择要上传的文件:inputname=filenametype=file/inputtype=submitvalue=上传//form/body/htmlform标签中多了属性enctype=multipart/form-data。上传文件所用的表单元素的类型是file。二、处理文件上传•有过ASP无组件上传经验的人都知道,在ASP中想通过HTTP方式自由上传文件那是件多么困难的事情!而在PHP中编写捕获上传文件的代码显得非常直观。不过,在不同的PHP版本以及根据是否开启了register_globals指令,函数名称和变量名称会有些不同。下面将展示的代码并不需要开启register_globals指令,但是对PHP版本的要求是至少4.1。$_FILES[]数组在PHP中,上传文件所产生的数据被保存在$_FILES数组中,同时,HTML表单中具有file类型属性的表单元素名称也将被保存。在xhtml.html文件中,它的名称是filename,因此该数组将具有如下内容:$_FILES['filename']['tmp_name']:上传后存储在Web服务器临时目录中的文件名$_FILES['filename']['name']:客户端上的原始文件名$_FILES['filename']['size']:文件的字节大小$_FILES['filename']['type']:文件的类型(如:image/gif)$_FILES['filename']['error']:上传文件过程中产生的错误描述。htmlxmlns==UTF-8headtitle文件上传/titlemetahttp-equiv=content-typecontent=text/html;charset=UTF-8/metahttp-equiv=content-languagecontent=UTF-8//headbody?php$error=$_FILES['filename']['error'];$tmpName=$_FILES['filename']['tmp_name'];$name=$_FILES['filename']['name'];$size=$_FILES['filename']['size'];$type=$_FILES['filename']['type'];if($error0){echo'文件上传出错!';exit;}if($type!='image/gif'){echo'文件类型错误!';exit;}if(is_uploaded_file($tmpName)){if(!move_uploaded_file($tmpName,'/upfiles/'.$name)){echo'文件移动失败!';exit;}}else{echo'文件'.$name.'可能未被上传!';exit;}echo'成功!';?/body/html第五节日期转换函数(microtime()函数)?php$stampmebaby=microtime();$chunks=explode(,$stampmebaby);$microseconds=$chunks[0];echo$microseconds;??phpechodate('Y-m-d');echodate('Y-m-dH:i:s');?总结•本章着重讲了文件操作函数,以及它们各自所应用的场合。fopen()函数和file()函数打开的文件易于读取,关闭一个以打开的文件用fclose()。其中只有file()函数返回的是数组类型值,fopen()和发fclose()函数返回的是布尔型值。作业•1.请学员用将本章节的实例进行有效的检查。