1. PHP文件类型检查
在web开发中,经常需要上传文件,如图片、音乐、视频等,但上传的文件并不一定是所期望的类型,为了防止上传不合法的文件,我们可以进行文件类型检查。
1.1. 文件类型获取
在PHP中,我们可以通过$_FILES超级全局变量来获取上传文件的类型,其类型值可以使用type属性来表示,但是这个type值并不可靠,因为不同的操作系统或Web服务器,可能会返回不同的值。
我们可以通过finfo模块来获取上传文件的MIME类型,简单介绍下该模块。
2. fileinfo模块
fileinfo是PHP自从5.3.0版本后,内置的一个重要扩展模块,可以检测文件的真实类型。在此之前,我们使用的通常是mime_content_type函数来检测文件类型。
2.1. 安装
fileinfo模块需要在PHP中进行启用,如果发现PHP中没有安装该模块,则需要先安装模块。
在Linux系统中运行以下命令来安装fileinfo模块:
sudo apt-get install php7.0-fileinfo
上述命令是用apt-get来安装,如果使用yum的话,则将apt-get替换为yum即可。
在Windows系统中使用XAMPP集成环境、WAMP集成环境或Bitnami集成环境时,fileinfo模块包含在其中,我们只需在PHP.ini文件中checkbox前打勾即可启动。
2.2. 使用
在安装了fileinfo模块之后,我们就可以使用它来获取文件类型了。
代码示例:
if (isset($_FILES['yourfile'])) {
// 获取上传文件的MIME类型
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $_FILES['yourfile']['tmp_name']);
finfo_close($finfo);
}
上面的代码,首先通过finfo_open()函数打开一个fileinfo资源,进而使用finfo_file()函数检测文件类型,最后通过finfo_close()函数关闭fileinfo资源。