详解php的文件操作

文件包含

require

直接在代码里演示一下它是怎么包含的,我们先定义一个关联数组:
t1.php

<?php
    $conn = array(
        'host' => 'localhost',
        'mysql' => 'localhost',
        'port' => 3306,
        'database' => 'testdb'
    );

现在用require包含一下这个文件中port的值:
t2.php

<?php
    echo "www.x.com<br>";

    require "t1.php";

    $host = $conn["port"];

    echo "$host";

成功包含:
在这里插入图片描述

include

代码我们不换,把require换成include试一下:

<?php
    echo "www.x.com<br>";

    include "t1.php";

    $host = $conn["port"];

    echo "$host";

一样可以包含出来:
在这里插入图片描述
include跟require的区别就是,使用include时,当程序中间代码出错后,后面的代码依然会执行,require就不会执行后续的代码:

<?php
    echo "www.x.com<br>";

    include "t7.php";

    $host = $conn["port"];
    
    echo 1;
    echo "$host";

在这里插入图片描述

<?php
    echo "www.x.com<br>";

    require "t7.php";

    $host = $conn["port"];

    echo 1;
    echo "$host";

在这里插入图片描述
文档是这么说的:
在这里插入图片描述

文件上传

先构造一个上传页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="pic">
    <input type="submit" value="上传">
</form>

</body>
</html>

构造一个接收页面:

<meta charset="utf-8">
<?php
    if (empty($_FILES)){
        echo "<script>alert('上传格式不正确!')</script>";

    }else{
        echo $_FILES["pic"]["size"].'<br>';
        echo $_FILES["pic"]["tmp_name"];
    }

上传:
在这里插入图片描述
查看返回页面:
在这里插入图片描述
现在我们的上传并不完整,因为并没有获取到文件,要想完整的实现上传,要用到一个函数move_uploaded_file(),先来看一下这个函数:
在这里插入图片描述

dir_name

这里涉及到路径,先来一个函数dirname()
在这里插入图片描述
这个函数的功能就是返回上级目录的路径:

<?php
    echo dirname(__DIR__);

在这里插入图片描述

这里先实现一个目录创建的操作,目录名随时间的变化而变化:

<meta charset="utf-8">
<?php
    define("PATH",dirname(__DIR__));

    $path = PATH."/upload/img";

    date_default_timezone_set('UTC');
    $dir1 = date("Ym");
    $dir2 = date("d");

    $fullpath = $path.'/'.$dir1.'/'.$dir2;


    if (is_dir($fullpath))
    {
        echo "yes";
    }else{
//        echo "no";
        mkdir($fullpath,0777,true);
    }
实现文件上传

这个文件上传只是走个流程,中间没有加任何验证,过滤什么的:

update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="pic.php" method="post" enctype="multipart/form-data">
    <input type="file" name="pic">
    <input type="submit" value="上传">
</form>

</body>
</html>

pic.php

<meta charset="utf-8">
<?php
    # 如果传过来的文件的大小等于0
    if ($_FILES["pic"]["size"] === 0){
        # 弹出请上传文件并返回之前的页面
        echo "<script>alert('请上传文件!');location.href='".$_SERVER["HTTP_REFERER"]."';</script>";
    }else {
        # 定义常量PATH,常量的值为当前目录的上级目录
        define("PATH", dirname(__DIR__));
        # 构造新的路径
        $path = PATH . "/upload/img";
        # 设置默认时区
        date_default_timezone_set('UTC');
        # 设置文件夹日期以年月日命名
        $dir1 = date("Ym");
        $dir2 = date("d");
        # 生成新的文件路径赋值给fullpath
        $fullpath = $path . '/' . $dir1 . '/' . $dir2;
        # 如果fullpath是一个文件
        if (is_dir($fullpath)) {
            # 弹出上传成功并跳回上传页面
            echo "<script>alert('上传成功!');location.href='".$_SERVER["HTTP_REFERER"]."'</script>";
            # 否则生成以fullpath命名的文件夹
        } else {
            mkdir($fullpath, 0777, true);
        }
        # 随机命名文件名
        $filename = rand(10000,99999);
        # 用strrchr()函数获取上传文件的后缀名,赋值给filetype
        $filetype = strrchr($_FILES["pic"]["name"],'.');
        # 重新命名文件名为:随机数字+固定文件后缀
        $filename = $filename.$filetype;
        # 将上传的文件上传到指定的文件夹中,并重新命名
        move_uploaded_file($_FILES["pic"]["tmp_name"],$fullpath.'/'.$filename);
    }

文件管理的基本函数

realpath()

在这里插入图片描述
返回绝对路径,我们来试一下:

<?php
    echo realpath('.').'<br>';
    echo realpath('../').'<br>';
    echo realpath('../../').'<br>';

运行结果:
在这里插入图片描述

opdir()和readdir()

opendir()打开目录句柄,readdir()是读取句柄中的目录:

<?php
    $filenames = opendir('.');
    while ($row = readdir($filenames)){
        echo $row.'<br>';
    }

运行结果:
在这里插入图片描述

is_dir()

判断给定文件是否是一个目录:

<?php
    if (is_dir("pic.php"))
    {
        echo 'yes';
    }else{
        echo 'no';
    }

运行结果:
在这里插入图片描述

unlink()

删除文件

<meta charset="utf-8">
<?php
# 此时文件夹中的aaa.txt会被删除
unlink("aaa.txt");
file_get_contents()和file_put_contents()

这两个函数,get是把整个文件内容处理成一个字符串,而put是将一串字符串写入文件,我们来实现一下:

<meta charset="utf-8">
<?php
    $str1 = file_get_contents("session1.php");
    var_dump($str1);

    file_put_contents("session1.php","<?php phpinfo();?>");
    var_dump($str1); 


?>

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值