5.part5-2day php文件

学习目的:处理文件

一、文件处理

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:\site\img\图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);
?>

文件函数友情链接

上一篇:part5 vue和HTML5相关知识总结


下一篇:ViCANdo新版本发布(PART5)| JavaScript脚本