PHP檔案上傳-面向物件的方法(MVC模式)
阿新 • • 發佈:2018-11-25
首先控制器:
<?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、控制器在去呼叫模型,使得十分靈活