PHP 文件与目录操作

判断普通文件和目录

  • is_file():判断给定文件名是否为一个正常的文件
  • is_dir():判断给定文件名是否为一个目录

文件的属性

  • file_exists():检查文件或目录是否存在
  • filesize():取得普通文件的大小
  • is_readable():判断给定文件名是否可读
  • is_writable():判断给定文件名是否可写
  • filectime():获取文件的创建时间
  • filemtime():获取文件的修改时间
  • fileatime():取得文件的上次访问时间
  • stat():获取文件大部分属性值

目录的基本操作

  • basename():返回路径中的文件名部分
  • dirname():返回路径中的目录部分
  • pathinfo():返回文件路径的信息
  • opendir():打开目录句柄
  • readdir():从目录句柄中读取条目,返回目录中下一个文件的文件名
  • rewinddir():倒回目录句柄
  • closedir():关闭目录句柄
  • mkdir():新建目录
  • rmdir():删除指定的空目录
  • scandir():列出指定路径中的文件和目录

文件的基本操作

  • fopen():打开文件或者URL
  • fread():读取文件
  • fgets():从文件指针中读取一行
  • feod():测试文件指针是否到了文件结束的位置
  • fwrite():写入文件
  • rewind():倒回文件指针的位置
  • flock():轻便的咨询文件锁定
  • ftruncate():将文件截断到给定的长度
  • fclose():关闭一个已打开的文件指针
  • file():把整个文件读入一个数组中
  • copy():拷贝文件
  • unlink():删除文件
  • file_get_contents():将整个文件读入一个字符串
  • file_put_contents():将字符串写入文件中
  • rename():重命名一个文件或目录
  • readfile():读入一个文件并写入到输出缓冲

文件的上传

HTML标签需要做的上传设置

form标签属性设置

  • method设置为post
  • enctype设置为multipart/form-data
  • form表单中设置隐藏类型的input,其中name值设置为MAX_FILE_SIZE, VALUE值设置为需要限制的上传文件的大小(单位为字节)

在服务器端通过PHP处理文件,涉及到下面的几条信息

1、设置PHP配置文件(php.ini)

配置项 可能值 功能描述
file_uploads ON 确定服务器上的PHP脚本是否可以接收HTTP文件上传
memory_limit 256M 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
upload_max_filesize 50M 限制PHP处理上传文件的最大值,此值必须小于post_max_size值
post_max_size 100M 限制通过POST方法可以接受的信息最大值
upload_tmp_dir D:/phpstudy_pro/WWW/tmp 上传文件存放的临时路径,可以是一个绝对路径。这个目录对于拥有此服务器进程用户必须是可写的

2、$_FILE多维数组:用于存储各种与上传有关的信息

  • $_FILES[‘file’][‘name’]:客户端机器文件的原名,包含拓展名

  • $_FILES[‘file’][‘size’]:已上传文件的大小,单位为字节

  • $_FILES[‘file’][‘tmp_name’]:文件上传之后,在服务器端存储的临时文件名

  • $_FILES[‘file’][‘error’]:文件上传时产生的错误
    0:表示没有发生任何错误,文件上传成功
    1:表示上传文件的大小超出了在PHP配置文件中upload_max_filesize选项限制的值
    2:表示上传文件大小超出了HTML表单中MAX_FILE _SIZE 选项多指定的值
    3:表示文件只被部分上传
    4:表示没有上传任何文件

  • _FILES[‘file’][‘type’]:获取客户端上传的MIME类型,MIME类型规定了各种文件格式的类型。每种MIME类型都是由/分隔的主类型和子类型组成


3、PHP的文件上传处理函数:用于上传文件的后继处理

  • is_uploaded_file():判断指定的文件是否通过HTTP POST上传的
  • move_uploaded_file():文件上传后,首先会存储与服务器的临时目录中,可以使用该函数将上传的文件移动到新位置

    header("Content-type:text/html; charset=utf-8");

    if(isset($_POST['submit'])){//如果点击上传执行如下代码
        if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
            $arr = pathinfo($_FILES['myfile']['name']); //获取文件后缀
            $newName = date("YmdGis").rand(1000, 9999);//获取当前日期
            if(move_uploaded_file($_FILES['myfile']['tmp_name'], "uploads/{$newName}.{$arr['extension']}")){
                echo "恭喜你!上传成功!";
            }else{
                echo "对不起!上传失败!";
            }
        }else{
            exit("可能有攻击,请你做合法的事情!");
        }
        // var_dump($_FILES);
    }
?>

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

文件的下载

发送指定的文件MIME类型的头信息

header(“Content-type:MIME类型”);

指定下载文件的描述

header(“Content-Disposition:attachement; filename=文件名称”));

指定下载文件的大小

header(‘Content-Length:文件大小’);

读取文件内容至输出缓冲区

readfile();


    $file = 'test.zip'; //文件路径
    $fileinfo = finfo_open((FILEINFO_MIME_TYPE));//创建一个fileinfo资源,返回MIME类型
    $mimeType = finfo_file($fileinfo, $file);//返回一个文件的信息
    finfo_close($fileinfo);//关闭fileinfo资源
    //发送指定的文件MIME类型的头信息
    header('Content-type:'.$mimeType);

    // 指定下载文件的描述
    header("Content-Disposition:attachement; filename=".basename($file));

    // 指定文件的大小
    header("Content-Length:".filesize($file));

    // 读取文件内容至输出缓冲区,返回这个文件
    readfile($file);
?>

你可能感兴趣的:(PHP,后端,php,后端)