对于文件上传来说,不仅要在前端通过JS进行验证,在后端也需要进行验证。因为如果前端禁用了JS,后端不采取验证,对于服务器来说是非常危险的,所以这里介绍一个PHP处理文件上传的函数,如有不足,欢迎补充。

下面是具体的函数
//上传处理函数
public function upload(){
//上传的文件名
$file_name=$_FILES["file"]["name"];
//移动存储的文件名
$move_to_file=date("Ymdhis").substr($file_name,strrpos($file_name,"."));
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);//把字符串分割为数组,在这里是名字和后缀
$extension = end($temp);//将指针指向数组中的最后一个元素,并输出
// 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"]/1024/1024< 2) // 小于 2M
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "./imgfile/".$move_to_file);
}
}
else
{
if ($_FILES["file"]["size"]/1024/1024< 2)
{
echo "<p style=’font-size:30px;’>这不是图片,不要开玩笑<br/>如果识别失败,请检查如下几个原因:<br/>1.上传文件是否为图片<br/>2.文件大小不能超过2M<br/>3.文件名最好使用英文字母或数字</p>";
}
else
{
echo "<p style=’font-size:30px;’>文件大小为".($_FILES["file"]["size"]/1024/1024)."MB,超过2M的限制<br/>如果识别失败,请检查如下几个原因:<br/>1.上传文件是否为图片<br/>2.文件大小不能超过2M<br/>3.文件名最好使用英文字母或数字</p>";
}
}
}
我写了很多的注释,希望大家能够看的懂,主要控制的是两个事情,一个是文件的类型,另外一个就是文件的大小,下图如果所示
上传一个8M的图片


如果随便上传不是图片的东西

这样在后台也做到了限制
