惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 银翼

【MySQL】Windows下如何彻底卸载MySQL? 【MySQL】Windows下如何重置root账号密码? 【Java】Task07实验4第5题解析 【辅导】Task12 类的定义与继承练习 【辅导】Task11 如何获取文件上传错误信息 PHP开发环境配置 XAMPP更换Apahce服务端口号 《Web应用开发技术(PHP)》往届学生优秀作业 【辅导】Task19 实现用户登录 主要知识点 【辅导】Task18 更新与插入删除操作 主要知识点 【辅导】Task17 查询数据 主要知识点 【辅导】Task16 使用MySQL数据库 主要知识点 【辅导】Task15 熟悉错误与异常处理 主要知识点 【辅导】Task14 使用正则表达式 主要知识点 【辅导】Task13 使用会话管理 主要知识点(2) 【辅导】Task13 使用会话管理 主要知识点(1) 【辅导】Task12 使用类和对象 主要知识点(2) 【辅导】Task12 使用类和对象 主要知识点(1) 【辅导】Task10 掌握PHP表单处理 主要知识点
【辅导】Task11 熟悉PHP文件操作 主要知识点
银翼 · 2020-04-01 · via 博客园 - 银翼

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\tmp文件夹下,使用随机文件名(扩展名是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、关于实验作业

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