首先控制器:
<?php
header("Content-type:text/html;charset=utf8");
require_once("upload.class.php");
//获取获取文件的后缀名
$temp = explode(".",$_FILES['file']['name']);
$ext = end($temp);//获取数组最后一个元素
//获取文件的大小、字节
$size = $_FILES['file']['size'];
//获取文件格式
$formats = $_FILES['file']['type'];
//获取上传错误信息
$err = $_FILES["file"]["error"];
//获取文件名
$filename = $_FILES['file']['name'];
//获取文件临时储存位置
$stored = $_FILES["file"]["tmp_name"];
$service = new upload();
$res = $service->getFile($ext,$size,$formats,$err,$filename,$stored);
echo $res;
?>
调用的模型,也就是封装的类
<?php
header("Content-type:text/html;charset=utf8");
class Upload {
public $max_size=2097152;
public $types=array("gif", "jpeg", "jpg", "png");
//判断文件类型是否正确
public function getFile ($type,$size,$format,$err,$filename,$stored) {
if (!in_array($type,$this->types)) {
return false;
}
if ($size > $this->max_size) {
return false;
}
if ($format=="image/gif" || $format=="image/jpeg" || $format=="image/jpg" || $format=="image/pjpeg" || $format=="image/x-png" || $format=="image/png") {
if ($err > 0) {
return "上传有误!".$err;
}
if (file_exists("upload/".$filename)) {
return "此文件已经存在!";
} else {
move_uploaded_file($stored,"upload/".$filename);
return "文件上传成功,文件所在目录:upload/".$filename;
}
} else {
return "非法的文件格式!";
}
exit();
}
}
?>
这其中,有些数据是可以动态的,比如:上传限制的文件大小
使用流程:
1、view层,一个上传的静态页面,上传的时候提交到控制器
2、控制器在去调用模型,使得十分灵活