【辅导】Task11 熟悉PHP文件操作 主要知识点

PHP中提供了许多对文件和文件夹(目录)进行操作的函数,详见《PHP手册-文件系统函数》:

https://www.php.net/manual/zh/ref.filesystem.php

本任务中只介绍几个常用的文件操作函数,了解如何读写文本文件,并掌握文件上传原理及文件上传控件的使用。

1、获取文件信息

 

file_exists相关:is_dir,is_file

filetype获取的文件类型,是与unix相关的,意义如下:

文件类型

描述

fifo

命名管道,用于将信息的一个进程传递到另一个进程

char

字符设备

Dir

目录类型

Block

块设备类型

Link

符号链接,是指向文件的指针

File

普通文件类型

unknown

未知类型

filemtime和fileatime获取的时间都是unix时间戳(int型)

文件权限采用的也是unix系统的文件权限,可参考下面的文章:

《理清PHP在Linxu下执行时的文件权限》:https://www.cnblogs.com/vishun/p/6950251.html

2、文件与文件夹管理相关的函数

目录管理:创建mkdir,删除rmdir,重命名(移动)rename

文件管理:删除unlink,重命名(移动):rename,复制copy

3、文本文件的读写

读取文本文件可以采用以下几种方式:

(1)读取整个文件内容

readfile函数,读取文件内容并输出

file_get_contents函数:文件内容作为函数值返回(string)。

file函数:将文件内容以行为单位,读入到数组中。(返回值为字符串数组)

(2)打开-读取-关闭

打开文件,fopen函数,指定打开方式,创建文件资源;

 

读取文件,可以使用fread函数(读取指定字符数),fgets函数(读取一行),fgetc函数(读取一个字符)

关闭文件:fclose函数。

写入文件也可以使用以下几种方式:

(1)整体写入

使用file_put_contents函数,将字符串写入到文件。

(2)打开-写入-关闭

fopen函数打开文件

fwrite函数写入数据

fclose关闭文件

4、关于文件上传控件

注意事项:表单(Form)的enctype属性必须为multipart/form-data

 

PHP文件上传的原理是:

(1)提交表单时,文件上传控件中文件上传到Web服务器xampp mp文件夹下,使用随机文件名(扩展名是tmp)。

(2)你需要使用move_uploaded_file函数将文件移动到你所需要的地方,并进行改名。

上传的文件信息可以使用全局数组$_FILES获取。

 注:$_FILE['file']['type']获取的是文件的MIME类型,MIME类型信息参见《MIME 参考手册》:https://www.w3school.com.cn/media/media_mimeref.asp

 $_FILE['file']['error']获取的文件上传代码如下:(感谢周广来同学提供)

所以文件上传处理的一般步骤是:

    //判断文件是否上传成功

    if ($_FILES["file"]["error"] > 0){

        // 设置或输出错误信息

    }

    else {

        // 判断是否为合法的文件

        if (isImageFile($filename)){

            //合法文件移动到目标处,自行决定是否对文件改名

            move_uploaded_file($filelocation,"upload/".$filename);

        }

}

如果使用多个文件控件,可以实现多文件上传。

 

例如,假设名为 /home/test/review.html 和 /home/test/xwp.out 的文件被提交,则 $_FILES['userfile']['name'][0] 的值将是 review.html,而 $_FILES['userfile']['name'][1] 的值将是 xwp.out。类似的,$_FILES['userfile']['size'][0] 将包含文件 review.html 的大小,依此类推。

5、关于实验作业

本任务没有设置实验作业,但需要大家参照视频(课件)中的例子,练习如何实现文件上传。

原文地址:https://www.cnblogs.com/whitewin/p/12610986.html