学习目的:处理文件
一、文件处理
1、$file = fopen('wecome.txt', 'r'); 打开文件,如果无法打开就会返回0(false)。参数1是包含文件名的文件路径,参数2是打开模式,
r 只读,在文件开头开始
r+ 读/写,在文件的开头开始
w 只写,打开并清空文件的内容;如果文件不存在,则创建新文件
w+ 读/写,打开文件并清空文件的内容;如果文件不存在,则创建新文件
a 追加,打开并向文件末尾进行写操作,如果文件不存在,则创建新文件
a+ 读/追加, 通过向文件末尾写内容,来保持文件内容
x 写 创建新文件,如果文件已存在,则返回FALSE和一个错误
x+ 读/写 创建新文件,如果文件已存在,则返回FALSE和一个错误
2、fclose($file); 关闭文件。
3、feof($file); 检测文件末尾
4、fgets($file); 逐行读取
5、fgetc($file); 逐字符读取
6、readfile($filePath); 读取一个文件并将其写入到输出缓冲,不需要打开文件直接写入文件路径即可
7、file(); 读取文件内容,按行存放在数组中包括换行符,返回一个数组
8、file_get_contents($filePath); 把整个文件读入一个字符串中
9、file_exists($filePath); 判断文件或目录是否存在
10、mkdir($fileDir, '0777'); 创建文件夹,参数1是文件目录名称,参数2是文件权限,默认是0777(允许全局访问)
11、rmdir($fileDir); 删除一个空目录
12、unlink($filePath); 删除文件
13、copy($oldFile, $newFile); 复制文件,参数1是要复制的文件,参数2是复制后的文件存放的位置,两个均是带有文件民的文件路径,如果目标地址中存在同名文件就会被覆盖
14、is_dir($file); 判断文件时否为一个目录
15、$dir = opendir($file); 打开目录
16、closedir($dir); 关闭目录
17、readdir($dir); 打开一个目录,读取它的内容
删除一个文件夹和里面内容的例子:
<?php
delDirFile($fileDir);
function delDirFile($fileDir)
{
$dir = opendir($fileDir);
while (($item = readdir($dir)) !== false) {
if ($item != '.' && $item != '..') {
if (is_dir($item)) {
delDirFile($fileDir . $item);
} else {
unlink($fileDir . $item);
}
}
}
}
?>
二、上传文件
以上传图片为例:
//前端代码 upload.html 用表单
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" value="上传"/>
</form>
//后端代码 upload.php
<?php
//允许上传的文件类型
$allowType = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
$imageName = time();
$imagePath = 'upload/';
if (empty($_FILES['image']['name'])) {
echo '请上传图片';
exit;
}
if ($_FILES['image']["size"] > 2097152) {
echo '上传文件超过2M';
exit;
}
if (!in_array($_FILES['image']['type'], $allowType)) {
echo '上传的图片格式不正确';
exit;
}
if ($_FILES['image']['error'] > 0) {
echo '上传失败,错误编码:' . $_FILES['file']['error'] . '<br>';
} else {
if (!file_exists($imagePath)) {
mkdir($imagePath, 0777, true);
}
$imageName .= $_FILES['image']['name'];
$imagePath .= $imageName;
//将临时文件移动到新的存储目录中并且永久的保存
move_uploaded_file($_FILES['image']['tmp_name'], $imagePath);
echo '<img src="' . $imagePath . '" alt="image">';
}
?>
与$_FILES相关的解释:$_FILES存储上传文件的相关信息
- $_FILES['image']['name']; 上传文件的名字
- $_FILES['image']['size']; 上传文件的大小
- $_FILES['image']['type']; 上传文件的类型
- $_FILES['image']['error']; 上传文件的结果 0 表示上传成功
- $_FILES['image']['temp_name']; 文件存储的临时位置
三、解析URL和文件路径
<?php $url = 'http://www.baidu.com/test.php?test=test&name=tom#top'; //输出URL的各个组成部分 print_r(parse_url($url)); //仅输出协议部分 echo parse_url($url, PHP_URL_SCHEME); //仅输出主机域名部分 echo parse_url($url, PHP_URL_HOST); //仅输出路径部分 echo parse_url($url, PHP_URL_PATH); //仅输出查询参数部分 echo parse_url($url, PHP_URL_QUERY); //仅输出锚点部分 echo parse_url($url, PHP_URL_FRAGMENT); ?>
<?php $filePath = 'D:siteimg图2.png'; //pathinfo函数输出指定路径的各个部分 print_r(pathinfo($filePath)); //仅获取目录名称 echo pathinfo($filePath, PATHINFO_DIRNAME); //仅获取文件名 + 扩展 echo pathinfo($filePath, PATHINFO_BASENAME); //仅获取文件扩展名 echo pathinfo($filePath, PATHINFO_EXTENSION); //仅获取文件名 echo pathinfo($filePath, PATHINFO_FILENAME); ?>