《PHP Web应用开发案例教程》630-9(阮云兰)教案 第19课 PHP文件处理与上传_第1页
《PHP Web应用开发案例教程》630-9(阮云兰)教案 第19课 PHP文件处理与上传_第2页
《PHP Web应用开发案例教程》630-9(阮云兰)教案 第19课 PHP文件处理与上传_第3页
《PHP Web应用开发案例教程》630-9(阮云兰)教案 第19课 PHP文件处理与上传_第4页
《PHP Web应用开发案例教程》630-9(阮云兰)教案 第19课 PHP文件处理与上传_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE12PAGE12PAGE11PAGE11

课题PHP文件处理与上传课时2课时(90min)教学目标知识技能目标:(1)掌握打开/关闭文件、读取/写入文件等文件处理的相关操作(2)掌握文件上传的相关知识素质目标:(1)将职业道德教育融入课程建设中,以社会主义核心价值观为指导思想,与人性化教学相结合,提高学生职业素养。(2)培养学生的辩证思维、提升学生的科学精神、培养爱国主义情怀教学重难点教学重点:文件上传的相关知识教学难点:读取/写入文件等文件处理教学方法案例分析法、问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学设计第1节课:→→→传授新知(38min)第2节课:→传授新知(20min)→课堂实训(15min)→课堂小结(3min)→作业布置(2min)教学过程主要教学内容及步骤设计意图第一节课课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,预习本节课要学习的知识【学生】完成课前任务通过课前任务,使学生预习本节课要学习的知识,增加学生的学习兴趣考勤(2min)【教师】使用文旌课堂APP进行签到【学生】班干部报请假人员及原因培养学生的组织纪律性,掌握学生的出勤情况问题导入(5min)【教师】提出以下问题:你知道在PHP中是如何对文件进行打开、关闭和读写操作的吗?通过问题导入,引导学生主动思考,激发学生的学习兴趣传授新知(38min)【教师】通过学生的回答引入要讲的知识,讲解PHP中打开/关闭文件、读取/写入文件等文件处理的相关操作10.3PHP文件处理文件处理包括打开、关闭、读取、写入数据等。访问一个文件一般需要3步:打开文件、读写文件和关闭文件。10.3.1打开/关闭文件打开/关闭文件可使用fopen()和fclose()函数。1.打开文件对文件执行任何操作都需要首先将其打开,在PHP中使用fopen()函数打开文件,其语法格式如下:resourcefopen(string$filename,string$mode[,bool$use_include_path])参数filename定义要打开的包含路径的文件名,可以是相对路径或绝对路径。如果filename是“scheme://…”格式,将被看作一个URL,PHP将搜索协议处理器来处理此模式。如果filename没有任何前缀,则表示打开的是本地文件。PHP在尝试打开文件时,必须确保该文件是PHP能够访问的,也就是要确认文件的访问权限。参数mode定义打开文件的方式✈【教师】通过多媒体展示“参数mode定义打开文件的方式”表格,并进行介绍fopen()函数中参数mode的取值列表取值说明r只读模式——以只读方式打开文件,文件指针位于文件头r+读写模式——以读写方式打开文件,文件指针位于文件头w只写模式——以只写方式打开文件,若文件存在,则将文件指针指向文件头,并将文件长度设为0,即该文件内容会消失;若文件不存在,则尝试建立该文件w+读写模式——以读写方式打开文件,若文件存在,则将文件指针指向文件头,并将文件长度设为0;若文件不存在,则尝试建立该文件a以附加的方式打开只写文件,文件指针指向文件尾。若文件存在,写入的数据会被加到文件尾后,即文件原来的内容会被保留;若文件不存在,则会创建该文件a+以附加的方式打开可读写的文件,文件指针指向文件尾。若文件存在,写入的数据会被加到文件尾后,即文件原来的内容会被保留;若文件不存在,则会创建该文件b二进制模式——以二进制模式打开文件。若文件系统能够区分二进制文件和文本文件,可能会使用它。Windows可以区分,Unix则不区分,推荐使用该选项,便于获得最大程度的可移植性。它是默认模式t文本模式——用于与其他模式的结合,Unix系统使用“\n”作为行结束字符,Windows系统使用“\r\n”作为行结束字符,该模式只是Windows系统下的一个选项可选参数use_include_path的作用是,如果需要在include_path中指定的路径下搜索文件,可将该参数设置为1或者true。2.关闭文件对文件操作结束后应关闭文件,以释放打开的文件资源。关闭文件可使用fclose()函数。其语法格式如下:boolfclose(resource$file)参数file为已打开的文件资源,也就是要关闭的文件,该资源对象必须有效,否则将返回false。✈【教师】通过多媒体展示例10-7的代码和运行结果,并进行讲解打开/关闭文件。实例代码如下:<?phpif(($file=fopen("test.txt","r"))===false)//使用条件语句判断是否打开文件失败{ die("使用只读方式打开文件“test.txt”失败<br>");//失败则输出语句}elseecho"使用只读方式打开文件“test.txt”成功<br>";if(fclose($file)){//使用条件语句判断是否关闭文件成功 echo"文件“test.txt”关闭成功<br>"; }else echo"文件“test.txt”关闭失败<br>";?>10.3.2读取文件PHP中读取文件的方法有多个,下面介绍几个常用函数。✈【教师】安排学生扫码观看视频“读取文件”,讲解知识✈【学生】扫码观看、理解、记忆1.readfile()、file()和file_get_contents()函数(1)readfile()函数。readfile()函数常用于读取整个文件,并将其写入输出缓冲,如出现错误则返回false。其语法格式如下:intreadfile(string$filename[,bool$use_include_path[,resource$context]])使用readfile()函数,不需要打开/关闭文件,也不需要echo、print等输出语句,只需要给出文件路径即可。(2)file()函数。file()函数也可用于读取整个文件内容,它是将文件内容按行读入一个数组中,数组的每一项对应文件中的一行,包括换行符在内。其语法格式如下:arrayfile(string$filename[,int$flags=0[,resource$context]])使用file()函数,也不需要打开/关闭文件,它将文件作为一个数组返回,如失败则返回false。(3)file_get_contents函数。file_get_contents函数也可用于读取整个文件内容,它是将文件内容读入一个字符串中。其语法格式如下:stringfile_get_contents(string$filename[,bool$use_include_path=false[,resource$context[,int$offset=-1[,int$maxlen]]]])该函数适用于二进制文件,如果有offset和maxlen参数,将从参数offset所指定的位置开始读取长度为maxlen的字符串,如读取失败则返回false。✈【教师】通过多媒体展示例10-8的代码和运行结果,并进行讲解读取整个文件。实例代码如下:<?phpheader("Content-type:text/html;charset=utf-8");$file="test.txt";readfile($file);//使用readfile()函数读取文件内容echo"<hr>";$arr=file($file);//使用file()函数读取文件内容foreach($arras$m){ echo$m."<br>";}echo"<hr>";echofile_get_contents($file);//使用file_get_contents()函数读取文件内容?>2.fread()函数在PHP中,fread()函数可用于读取文件中任意长度的字符串。其语法格式如下:stringfread(resource$file,int$length)参数file定义要读取的文件;参数length定义要读取的字节数。该函数在读取完length个字节,或到达EOF时就停止读取文件。✈【教师】通过多媒体展示例10-9的代码和运行结果,并进行讲解读取任意长度字符串。实例代码如下:<?php$filename="test.txt";$file=fopen("test.txt","r"); //打开文件echofread($file,"18"); //使用fread()函数读取文件内容的前18个字节echo"<hr>";echofread($file,filesize($filename)); //使用fread()函数读取文件的其余内容fclose($file); //关闭文件?>3.fgets()函数当文本内容较多时,可以采取逐行读取文件的方式。使用fgets()函数可以从打开的文件中读取一行字符。其语法格式如下:stringfgets(resource$file,int$length)该函数从file指向的文件中读取一行,并返回长度最多为length-1字节的字符串,若失败,则返回false。fgets()函数在碰到换行符(包括在返回值中)、EOF或者已经读取了length-1字节后停止。如果没有设置参数length,则默认为1KB(1024字节)。✈【教师】通过多媒体展示例10-10的代码和运行结果,并进行讲解打开文件读取一行字符。实例代码如下:<?php$file=fopen("test.txt","r"); //使用只读方式打开文档echofgets($file); //读取打开文件的一行字符echo"<hr>";while(!feof($file)) //利用循环语句输出文档中的其他字符{echofgets($file)."<br>";}fclose($file); //关闭文档?>4.fgetc()函数使用fgetc()函数可以从打开的文件中读取一个字符。其语法格式如下:stringfgetc(resource$file)该函数从打开的文件中返回一个字符,遇到EOF时则返回false。✈【教师】通过多媒体展示例10-11的代码和运行结果,并进行讲解打开文件读取一个字符。实例代码如下:<?php$file=fopen("test.txt","r"); //以只读方式打开文档echofgetc($file); //使用fgetc()函数读取一个字符,并输出echo"<hr>"; //输出水平分割线while(!feof($file)) //使用循环语句输出文档中的其他字符{echofgetc($file);}fclose($file); //关闭文档?>10.3.3在文件中写入数据在文件中写入数据,也是PHP的常用操作。使用fwrite()和file_put_contents()函数可向文件中写入数据。fwrite()函数的语法格式如下:intfwrite(resource$handle,string$string[,int$length])该函数把string定义的字符串,写入handle定义的文件指针处;如果设置了length参数,当写入length个字节,或写完string后,写入就会停止。fwrite()函数返回写入的字符串,出现错误时则返回false。file_put_contents()函数的语法格式如下:intfile_put_contents(string$filepath,mixed$data[,int$mode=0])参数filepath定义要写入数据的文件。如果文件不存在,则创建一个新文件。参数data定义要写入文件中的数据,类型可以是字符串、数组或数据流。参数mode可选,定义如何打开/写入文件,可能的值有FILE_USE_INCLUDE_PATH,FILE_APPEND或LOCK_EX(独占锁定)。使用file_put_contents()函数与依次调用fopen(),fwrite()和fclose()函数所实现的功能一样。✈【教师】通过多媒体展示例10-12的代码和运行结果,并进行讲解在文件中写入数据,并输出。实例代码如下:<?php $file="test1.txt"; //定义要写入数据的文档 $str1="Loveisalamp,whilefriendshipistheshadow.";//定义要写入的字符串1 $str2="Whenthelampisoff,youwillfindtheshadoweverywhere.";//定义要追加的字符串2 echo"用fwrite()函数写入文件:"; $fopen=fopen($file,'w'); //以只写方式打开文件 fwrite($fopen,$str1); //将字符串1写入文档 fclose($fopen); //关闭文档 readfile($file); //读取整个文档内容并输出 echo"<p>用file_put_contents()函数写入文件:"; file_put_contents($file,$str2,FILE_APPEND);//以追加的形式将字符串2写入文档 readfile($file); //读取整个文档内容并输出?>10.3.4其他常用文件操作函数PHP除了可以对文件内容进行读写外,也可以对文件本身进行操作,如删除、复制、移动和重命名文件等。常用文件操作函数如表所示。✈【教师】通过多媒体展示“常用文件操作函数”表格,并进行介绍常用文件操作函数函数原型说明示例unlink($filename)删除文件unlink(‘test.txt’)copy($source,$dest)复制文件copy("source.txt","target.txt")rename($oldname,$newname)重命名文件,如果源文件和目标文件路径不同,可以实现文件的移动rename("images","pictures")feof($file)检测是否已到达文件末尾$file=fopen("test.txt","r");while(!feof($file))fgetss($handle)从打开的文件中读取一行并过滤掉HTML和PHP标记$file=fopen("test.html","r");echofgetss($file)fileatime($filename)返回文件的上次访问时间fileatime("test.txt")filemtime($filename)返回文件的上次修改时间filemtime("test.txt")filesize($filename)返回文件大小filesize("test.txt")arraystat($filename)以数组形式返回关于文件的信息,如文件大小、最后修改时间等$file=fopen("test.txt","r");print_r(stat($file));在读写文件时,除file()、readfile()等少数几个函数外,其他操作必须要先使用fopen()函数打开文件,最后用fclose()函数关闭文件。文件信息函数,如filesize()、fileatime()等,则都不需要打开文件,只要文件存在即可。【学生】聆听、思考、记录通过教师的讲解和演示,使学生了解PHP中打开/关闭文件、读取/写入文件等文件处理的相关操作第二节课问题导入(5min)【教师】提出以下问题:每一种文件的文件类型都不一样,PHP中支持的文件类型有哪些呢?【学生】思考、举手回答通过问题导入,引导学生主动思考,激发学生的学习兴趣传授新知(20min)【教师】通过学生的回答引入新知,介绍PHP中文件上传的相关知识10.4文件上传文件上传是Web应用的一个常用功能,就是浏览者通过浏览器将文件上传到服务器上的指定目录,如注册用户上传自己的头像图片。10.4.1文件上传的基本知识1.可上传文件的类型PHP可以上传的文件类型有多种,如图像文件、文本文件、PPT文件、音频文件、视频文件等。各种文件的数据格式如表所示。文件MIME类型列表文件类型MIME类型图像文件image/gif、image/jpeg、image/jpg、image/png纯文本和HTML文件text/txt、text/plain、text/htmlPPT文件application/vnd.ms-powerpoint音频文件audio/basic视频文件video/mpeg二进制或数据流文件application/octet-streamMIME意为多功能互联网邮件扩展,它设计的最初目的是在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,其意义就更为显著了。它使得HTTP协议传输的不仅是普通的文本。

每个MIME类型由两部分组成,前面是数据的大类别,如声音audio、图像image等,后面定义具体的种类。2.配置“php.ini”文件要实现文件上传功能,首先需要在“php.ini”中开启文件上传,并设置其中的一些参数。首先要设置的是FileUploads项,其中有3个常用属性,其意义分别如下:file_uploads:如果值为on,表示服务器支持文件上传;如果值为off,则不支持。upload_tmp_dir:上传文件的临时目录,默认为“C:\Windows\temp\”。在文件成功上传之前,先是被存放在服务器端的临时目录中。如果需要指定新位置,可通过设置该项来实现。upload_max_filesize:服务器允许上传的文件的最大值,以MB为单位。系统默认为2MB,用户可根据需要设置合适大小。10.4.2预定义变量$_FILES$_FILES变量为一个二维数组,用于接收上传文件的相关信息,有5个主要元素,具体说明如表所示。预定义变量$_FILES元素说明元素名说明$_FILES[filename][name]存储上传文件的文件名,如text.txt、snow.jpg等$_FILES[filename][size]存储文件的字节大小$_FILES[filename][type]存储上传文件的类型$_FILES[filename][error]存储上传文件的结果。如果值为0,说明文件上传成功✈【教师】通过多媒体展示例10-13的代码和运行结果,并进行讲解使用$_FILES变量输出上传文件的相关信息。实例代码如下:<body><!--上传文件的form表单必须有enctype属性--><formaction=""method="post"enctype="multipart/form-data">选择照片:<!--上传文件域的type类型必须为file--><inputtype="file"name="zhaopian"id="zhaopian"size="30"/><inputtype="submit"name="tj_btn"id="tj_btn"value="提交"/></form><?php if(!empty($_FILES)){//判断变量$_FILES是否为空 foreach($_FILES['zhaopian']as$name=>$value)//使用循环语句输出上传文件的相关信息 echo$name.'='.$value.'<br>'; }?></body>单击“浏览”按钮选择要上传的文件表单上传时,其method属性必须为post,enctype属性必须为multipart/form-data(它表示上传二进制数据),这样才能完整地上传文件数据,完成上传操作。input标签的type属性必须为file,这样服务器才会将input作为上传文件来处理。10.4.3文件上传函数PHP中使用move_uploaded_file()函数上传文件,该函数将存放在临时目录下的上传文件拷贝出来,存放到指定目录中,如果目标存在,将会被覆盖。其语法格式如下:boolmove_uploaded_file(string$filename,string$dest)该函数将上传文件存储到指定位置,如成功,则返回true,否则返回false。参数filename是上传文件的临时文件名,即$_FILES[filename][tmp_name];参数dest是文件上传后保存的新路径和名称。✈【教师】通过多媒体展示例10-14的代码和运行结果,并进行讲解上传文件。实例代码如下:<formaction=""method="post"enctype="multipart/form-data">选择照片:<inputtype="file"name="zhaopian"id="zhaopian"size="30"/><inputtype="submit"name="tj_btn"id="tj_btn"value="提交"/></form><?php if(!empty($_FILES['zhaopian']['name'])){//判断上传文件是否存在 $fileinfo=$_FILES['zhaopian'];//将文件信息赋给变量$fileinfo if($fileinfo['size']<1000000&&$fileinfo['size']>0){//判断文件大小 move_uploaded_file($fileinfo['tmp_name'],"upload/".$fileinfo['name']);//上传文件 echo'文件上传成功'; }else{ echo'文件太大,不符合上传要求'; } }?>单击“浏览”按钮选择要上传的文件,之后单击“提交”按钮本例必须要在文档根目录下创建一个文件夹“upload”,以放置上传的文件,否则系统会报错。10.4.4多文件上传PHP支持同时上传多个文件,但需要在表单中对文件上传域使用数组形式命名,这样,上传的文件信息也将会自动以数组形式组织。✈【教师】通过多媒体展示例10-15的代码和运行结果,并进行讲解同时上传多个文件。实例代码如下:<?phpif(!empty($_FILES["u_file"]["name"])){ //判断$_FILES变量是否为空 $file_name=$_FILES["u_file"]["name"]; //将上传文件名另存为数组 $file_tmp_name=$_FILES["u_file"]["tmp_name"]; //将上传的临时文件名存为数组 for($i=0;$i<count($file_name);$i++){ //循环上传文件 if($file_name[$i]!=''){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论