PHP開發檔案上傳教學之封裝函數
首先我們要把處理文件錯誤訊息全部放在一個文件中
下面我們來定義一個函數文件,function.php
這裡面我們要用到3個文件, file.html doaction.php function.php
第一個頁面我們就不多講了,程式碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文件上传</title> </head> <body> <form method="post" action="doaction1.php" enctype="multipart/form-data"> 上传文件:<input type="file" name="myfile"><br> <input type="submit" value="上传文件"> </form> </body> </html>
下面我們來看doaction.php
header ("Content-type: text/html; charset=utf-8");
$fileinfo = $_FILES['myfile'];
$allowEXT = array('jpg','png','jpeg ','gif');//檔案格式
$maxfile = 2097152; //2M //檔案多大
$ext = pathinfo($fileinfo['name'],PATHINFO_EXTENSION);//取得檔案類型
$file = $fileinfo['error']; //存放錯誤訊息
這個檔案我們還沒寫完,等我們把函數封裝好,我們要在這個檔案中引入封裝的文件,然後呼叫函數
下面我們來看function.php文件,程式碼如下:
<?php function files($file,$ext,$allowEXT,$maxfile,$size){ //判断错误号 if($file > 0){ switch ($file){ case 1: $msg= "上传文件超过了php 配置文件中 upload_max_filesize 的值";break; case 2: $msg= "上传文件超过max_file_size 大小";break; case 3: $msg= "文件部分被上传";break; case 4: $msg= "没有选择上传文件";break; case 6: $msg= "没有找到临时目录";break; case 7: case 8: $msg= "系统错误";break; } exit($msg); } //检测文件上传的类型 if(!in_array($ext, $allowEXT)){ exit('非法文件类型'); } //检测上传文件的大小 if($fileinfo['size']>$maxfile){ exit('文件过大'); } //检测是否是http post方式提交的 if(!is_uploaded_file($fileinfo['$tmp_name'])){ exit("文件不是以POST方式提交"); } } ?>
如上程式碼,我們就封裝完成,函數有4個參數
之前我們說到doction.php 需要引入function.php,然後呼叫函數
docation.php檔案完整程式碼如下:
<?php header("Content-type: text/html; charset=utf-8"); require_once("function.php"); $fileinfo = $_FILES['myfile']; $allowEXT = array('jpg','png','jpeg','gif');//文件格式 $maxfile = 2097152; //2M //文件多大 $ext = pathinfo($fileinfo['name'],PATHINFO_EXTENSION);//获取文件类型 $file = $fileinfo['error']; //存放错误信息 $size = $fileinfo['size']; files($file,$ext,$allowEXT,$maxfile,$size); ?>