PHP文件处理
fopen()函数用于在PHP中打开文件夹
打开文件
<html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>
文件打开模式
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
如果文件不能被打开
如果fopen()函数无法打开指定文件,则返回0(false)
如果fopen()函数不能打开指定的文件,下面的实例会生成一段消息
<html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html>
检测文件末尾(EOF)
feof()函数检测是否已经达到文件末尾(EOF)。
在循环遍历位置长度数据时,feof()函数很有用
实例 if(feof($file)) echo "文件结尾";
逐行读取文件
fgets()函数用于从文件中逐行读取文件。
注释:在调用该函数之后,文件指针会移动到下一行。
实例:
<?php $file = fopen("welcome.txt", "r") or exit("无法打开文件!"); // 读取文件每一行,直到文件结尾 while(!feof($file)) //判断是否到文件结尾 { echo fgets($file). "<br>"; //打印当前行数据 } fclose($file); ?>
文件上传
创建一个文件上传表单
<html> <head> <meta charset="utf-8"> <title>php教程(runoob.com)</title> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">文件名:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
<form>标签的enctype属性规定了在提交表单时要使用哪种内容类型,在表单需要二进制数据时,比如说文件内容,可以使用multipart/form-data
创建上传脚本,获取文件相关信息
<?php if($_FILES["file"]["error"]>0){ echo "错误:".$_FILES["file"]["error"]."<br>"; }else{ //获取文件信息 echo "上传文件名".$_FILES["file"]["name"]."<br>"; //label标签的file属性 echo "文件类型".$_FILES["file"]["type"]."<br>"; echo "文件大小".(_FILES["file"]["size"]/1024)."KB<br>"; echo "文件临时存储位置".$_FILES["file"]["tmp_name"]; } ?>
上传限制
用户只能上传GIF,jpeg,jpg,png文件,且文件大小必须小于200kb
<?php $allowExts = array("gif","jpeg","jpg","png"); $temp = explode(".",$_FILES["file"]["name"]); $extension = end($temp); //获取文件后缀名 //判断文件类型 if((($_FILES["file"]["type"] == "image/gif") ||($_FILES["file"]["type"] == "image/jpeg") ||($_FILES["file"]["type"] == "image/jpg") ||($_FILES["file"]["type"] == "image/png")) &&($_FILES["file"]["size"] < 204800) //小于200KB && in_array($extension,$allowedExts)) { if($_FILES["file"]["error"]>0){ echo "错误:".$_FILES["file"]["error"]."<br>"; }else{ //获取文件信息 echo "上传文件名".$_FILES["file"]["name"]."<br>"; //label标签的file属性 echo "文件类型".$_FILES["file"]["type"]."<br>"; echo "文件大小".(_FILES["file"]["size"]/1024)."KB<br>"; echo "文件临时存储位置".$_FILES["file"]["tmp_name"]; //判断当前目录下的upload目录是否存在该文件 //如果没有upload目录,就创建 if(file_exists("upload/".$_FILES["file"]["name"])) { echo $_FILES['file']["name"]."文件已存在"; }else{ //如果upload目录不存在该文件则将文件上传到upload目录下 move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']); echo "文件存储在:" . "upload/".$_FILES['file']['name']; } } }else{ echo "非法的文件格式"; } ?>