功能強(qiáng)大的php文件上傳類
本文實例為大家分享了php文件上傳類,功能很強(qiáng)大,供大家參考,具體內(nèi)容如下
<?PHP /* *文件上傳類 **/ class upfile{ private $file_size;//上傳源文件大小 private $file_tem;//上傳文件臨時儲存名 private $file_name;//上傳文件名 private $file_type;//上傳文件類型 private $file_max_size=2000000;//允許文件上傳最大 private $file_folder="uploadFiles";//文件上傳路徑 private $over_write=false;//是否覆蓋同名文件 //允許上傳圖片的類型 private $allow_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); //構(gòu)造類,file:上傳文件域 function __construct($file){ $this->file_name=$_FILES[$file]['name'];//客戶端原文件名 $this->file_type=$_FILES[$file]['type'];//文件類型 $this->file_tem=$_FILES[$file]['tmp_name'];//儲存的臨時文件名,一般是系統(tǒng)默認(rèn) $this->file_size=$_FILES[$file]['size'];//文件大小 } //如果文件夾不存在則創(chuàng)建文件夾 function creatFolder($f_path){ if(!file_exists($f_path)){ mkdir($f_path,0777); } } //判斷文件是不是超過上傳限制 function is_big(){ if($this->file_size>$this->file_max_size){ echo "文件太大,超過限制!"; exit; } } //檢查文件類型 function check_type(){ if(!in_array($this->file_type,$this->allow_type)){ echo "上傳文件類型不正確"; exit; } } //檢查文件是否存在 function check_file_name(){ if(!file_exists($this->file_tem)){ echo "上傳文件不存在"; exit; } } //檢查是否有同名文件,是否覆蓋 function check_same_file($filename){ if(file_exists($filename)&&$this->over_write!=true){ echo "同名文件已存在!"; exit; } } //移動文件 function move_file($filename,$destination){ if(!move_uploaded_file($filename,$destination)){ echo "移動文件出錯"; exit; } } //檢查文件是否是通過 HTTP POST 上傳的 function is_upload_file(){ if(!is_uploaded_file($this->file_tem)){ echo "文件不存在"; exit; } } //獲得文件后綴名 function getext(){ $ext=$this->file_name; $extstr=explode('.',$ext); $count=count($extstr)-1; return $extstr[$count]; } //新建文件名 function set_name(){ return time().".".$this->getext(); } //建立以年月日為文件夾名 function creat_mulu(){ $this->creatFolder("../../upload/".date(Ymd)); return "upload/".date(Ymd); } //生成的文件名 function files_name(){ $name=$this->set_name(); $folder=$this->creat_mulu(); return "../../".$folder."/".$name; } //上傳文件 function upload_file(){ $f_name=$this->files_name(); move_uploaded_file($this->file_tem,$f_name); return $f_name; } //生成縮略圖 //最大寬:120,高:120 function create_simg($img_w,$img_h){ $name=$this->set_name(); $folder=$this->creat_mulu(); $new_name="../../".$folder."/s_".$name; $imgsize=getimagesize($this->files_name()); switch ($imgsize[2]){ case 1: if(!function_exists("imagecreatefromgif")){ echo "你的GD庫不能使用GIF格式的圖片,請使用Jpeg或PNG格式!返回"; exit(); } $im = imagecreatefromgif($this->files_name()); break; case 2: if(!function_exists("imagecreatefromjpeg")){ echo "你的GD庫不能使用jpeg格式的圖片,請使用其它格式的圖片!返回"; exit(); } $im = imagecreatefromjpeg($this->files_name()); break; case 3: $im = imagecreatefrompng($this->files_name()); break; case 4: $im = imagecreatefromwbmp($this->files_name()); break; default: die("is not filetype right"); exit; } $src_w=imagesx($im);//獲得圖像寬度 $src_h=imagesy($im);//獲得圖像高度 $new_wh=($img_w/$img_h);//新圖像寬與高的比值 $src_wh=($src_w/$src_h);//原圖像寬與高的比值 if($new_wh<=$src_wh){ $f_w=$img_w; $f_h=$f_w*($src_h/$src_w); }else{ $f_h=$img_h; $f_w=$f_h*($src_w/$src_h); } if($src_w>$img_w||$src_h>$img_h){ if(function_exists("imagecreatetruecolor")){//檢查函數(shù)是否已定義 $new_img=imagecreatetruecolor($f_w,$f_h); if($new_img){ imagecopyresampled($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h);//重采樣拷貝部分圖像并調(diào)整大小 }else{ $new_img=imagecreate($f_w,$f_h); imagecopyresized($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h); } }else{ $$new_img=imagecreate($f_w,$f_h); imagecopyresized($new_img,$im,0,0,0,0,$f_w,$f_h,$src_w,$src_h); } if(function_exists('imagejpeg')){ imagejpeg($new_img,$new_name); }else{ imagepng($new_img,$new_name); } imagedestroy($new_img); } //imagedestroy($new_img); return $new_name; } } ?>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP實現(xiàn)的無限分類類庫定義與用法示例【基于thinkPHP】
這篇文章主要介紹了PHP實現(xiàn)的無限分類類庫定義與用法,結(jié)合實例形式分析了基于thinkPHP實現(xiàn)的無限分類類庫相關(guān)定義及具體使用操作技巧,需要的朋友可以參考下2018-08-08php定義一個參數(shù)帶有默認(rèn)值的函數(shù)實例分析
這篇文章主要介紹了php定義一個參數(shù)帶有默認(rèn)值的函數(shù),實例分析了php參數(shù)帶有默認(rèn)值的函數(shù)使用技巧,需要的朋友可以參考下2015-03-03PHP中讓json_encode不自動轉(zhuǎn)義斜杠“/”的方法
這篇文章主要給大家分享了PHP中如何讓json_encode不自動轉(zhuǎn)義斜杠“/”的兩種方法,文中給出了詳細(xì)的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-02-02php通過分類列表產(chǎn)生分類樹數(shù)組的方法
這篇文章主要介紹了php通過分類列表產(chǎn)生分類樹數(shù)組的方法,涉及php操作數(shù)組與分類節(jié)點的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04奉獻(xiàn)出一個封裝的curl函數(shù) 便于調(diào)用(抓數(shù)據(jù)專用)
這個函數(shù)就是封裝了curl函數(shù)的常用步驟,方便大家抓數(shù)據(jù),小偷程序也是用類似的代碼,需要的朋友可以參考下2013-07-07php自定義urlencode,urldecode函數(shù)實例
這篇文章主要介紹了php自定義urlencode,urldecode函數(shù),實例分析了php字符串轉(zhuǎn)碼的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03工廠模式在Zend Framework中應(yīng)用介紹
在Zend Framework中,使用了多種設(shè)計模式。其中對數(shù)據(jù)庫的封裝,用到了工廠模式2012-07-07