php限制上传文件类型并保存上传文件

1. PHP限制上传文件类型

在web开发过程中,我们经常需要上传文件,但是用户上传文件的类型我们是需要加以限制的,例如禁止上传.exe、.sh等脚本文件,这是为了防止用户上传恶意代码,增加网站被攻击的风险。

PHP提供了一个文件上传的类,即$_FILES。使用$_FILES进行文件上传时,需要获取上传文件的名字、类型、大小等信息,代码如下:

if(isset($_FILES['myFile'])){

$file = $_FILES['myFile'];

//获取文件名

$fileName = $file['name'];

//获取文件类型

$fileType = $file['type'];

//获取文件大小

$fileSize = $file['size'];

}

在通过$_FILES获取文件相关信息之后,我们需要判断文件类型是否符合要求。

2. PHP限制上传文件类型并保存上传文件

2.1 限制文件类型

为了限制上传的文件类型,需要通过$_FILES获取文件类型,并且与允许上传的文件类型进行比对。如果文件类型不在允许列表之内,则禁止上传文件。代码如下:

$allowTypes = array('image/png', 'image/jpeg', 'image/gif');

if(in_array($fileType, $allowTypes){

// 上传文件的操作

}else{

echo '文件类型不正确';

}

上述代码定义了允许上传的文件类型为pngjpeggif,使用in_array()判断上传文件类型是否在允许列表内。

2.2 限制文件大小

为了增加系统安全性和节省存储空间,我们一般也需要对上传文件的大小进行限制。代码如下:

$maxSize = 1024 * 1024; //1M

if($fileSize > $maxSize){

echo '文件过大';

}

上述代码定义了允许上传文件的最大值为1M,使用$fileSize获取上传文件的大小,与$maxSize进行比较。

2.3 保存上传文件

在上传文件的过程中,我们需要将上传的文件保存到服务器上。可以使用move_uploaded_file()函数将文件从临时目录中移动到指定的目录下。代码如下:

if(move_uploaded_file($file['tmp_name'], './uploads/'.$fileName)){

echo '文件上传成功';

}

上述代码将上传的文件从临时目录中移动到./uploads目录下,并且$fileName为上传文件的名称。

后端开发标签