php簡單的上傳類分享,php上傳分享
本文執行個體為大家分享了php上傳類,供大家參考,具體內容如下
<?phpclass UploadFile{ var $inputName; //控制項名 var $allowType = array( 'image/gif','image/jpg','image/jpeg','image/png','image/x-png','image/pjpeg' ); //上傳類型 var $allowSize = 2097152; //限制大小 var $saveDir = UPLOAD; //儲存目錄 var $isRename = true; //是否重新命名,預設為true var $errID = 0; //錯誤碼,預設為0 var $errMsg = ""; //錯誤資訊 var $savePath = ""; //儲存路徑 function __construct($inputName,$allowType="",$allowSize="",$saveDir="",$isRename=true){ if(empty($inputName)){ $this->chk_err(-1); //無傳入控制項名 }else{ $this->inputName = $inputName; } if(!empty($allowType)) $this->allowType = $allowType; if(!empty($allowSize)) $this->allowSize = $allowSize; if(!empty($saveDir)) $this->saveDir = $saveDir; if(!empty($isRename)) $this->isRename = $isRename; } function is_uploaded(){ if(empty($_FILES[$this->inputName]['name'])){ $this->chk_err(4); //沒有檔案被上傳 }else{ if(is_uploaded_file($_FILES[$this->inputName]['tmp_name'])){ return true; }else{ $this->chk_err(-2); //檔案上傳不合法 } } } function chk_type(){ if(!in_array($_FILES[$this->inputName]['type'],$this->allowType)){ $this->chk_err(-3); //上傳的檔案類型不被允許 }else{ return true; } } function chk_size(){ if($_FILES[$this->inputName]['size'] > $this->allowSize){ $this->chk_(-4); //上傳的檔案過大 }else{ return true; } } function move_uploaded(){ //移動上傳檔案 if(!$this->is_uploaded()){ return false; } if(!$this->chk_size()){ return false; } if(!$this->chk_type()){ return false; } //重新命名 if($this->isRename){ $arrTmp = pathinfo($_FILES[$this->inputName]['name']); $extension = strtolower($arrTmp['extension']); $file_newname = date("YmdHis").rand(1000,9999)."00.".$extension; //重新命名新檔案, 00表示為上傳的為原圖 }else{ $file_newname = $_FILES[$this->inputName]['name']; } if(!file_exists($this->saveDir)){ //判斷儲存目錄是否存在 mkdir($this->saveDir,0777,true); //建立儲存目錄 } //移動檔案 $result = move_uploaded_file($_FILES[$this->inputName]['tmp_name'],$this->saveDir."/".$file_newname); if($result){ $path = $this->savePath = $this->saveDir.$file_newname; //檔案的成功儲存路徑 return $path; }else{ $this->chk_err($_FILES[$this->inputName]['error']); } } //判斷出錯資訊 function chk_err($errID){ $this->errID = $errID; switch($this->errID){ case -4: $this->errMsg = "上傳的檔案過大"; break; case -3: $this->errMsg = "上傳的檔案類型不被允許"; break; case -2: $this->errMsg = "檔案上傳不合法"; break; case -1: $this->errMsg = "無控制項名傳入"; break; case 1: $this->errMsg = '上傳的檔案超出了php.ini中upload_max_filesize設定的最大值'; break; case 2: $this->errMsg = '上傳檔案的大小超過了HTML表單中MAX_FILE_SIZE選項指定的值'; break; case 3: $this->errMsg = '檔案只有部分被上傳'; break; case 4: $this->errMsg = '沒有檔案被上傳'; break; default: break; } return false; } function get_errMsg(){ echo $this->errMsg; //輸出錯誤資訊 } /** +---------------------------------------------------------- * 取得映像資訊 * +---------------------------------------------------------- * @static * @access public +---------------------------------------------------------- * @param string $image 影像檔名 +---------------------------------------------------------- * @return mixed +---------------------------------------------------------- */ function getImageInfo($img) { $imageInfo = getimagesize($img); if( $imageInfo!== false) { $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]),1)); $imageSize = filesize($img); $info = array( "width" =>$imageInfo[0], "height" =>$imageInfo[1], "type" =>$imageType, "size" =>$imageSize, "mime" =>$imageInfo['mime'], ); return $info; }else { return false; } } /** +---------------------------------------------------------- * 產生縮圖 +---------------------------------------------------------- * @static * @access public +---------------------------------------------------------- * @param string $image 原圖 * @param string $type 映像格式 * @param string $thumbname 縮圖檔案名稱 * @param string $maxWidth 寬度 * @param string $maxHeight 高度 * @param string $position 縮圖儲存目錄 * @param boolean $interlace 啟用隔行掃描 * @param boolean $is_save 是否保留原圖 +---------------------------------------------------------- * @return void +---------------------------------------------------------- */ function thumb($image,$is_save=true,$suofang=0,$type='',$maxWidth=500,$maxHeight=500,$interlace=true){ // 擷取原圖資訊 $info = $this->getImageInfo($image); if($info !== false) { $srcWidth = $info['width']; $srcHeight = $info['height']; $type = empty($type)?$info['type']:$type; $type = strtolower($type); $interlace = $interlace? 1:0; unset($info); if ($suofang==1) { $width = $srcWidth; $height = $srcHeight; } else { $scale = min($maxWidth/$srcWidth, $maxHeight/$srcHeight); // 計算縮放比例 if($scale>=1) { // 超過原圖大小不再縮減 $width = $srcWidth; $height = $srcHeight; }else{ // 縮圖尺寸 $width = (int)($srcWidth*$scale); //147 $height = (int)($srcHeight*$scale); //199 } } // 載入原圖 $createFun = 'ImageCreateFrom'.($type=='jpg'?'jpeg':$type); $srcImg = $createFun($image); //建立縮圖 if($type!='gif' && function_exists('imagecreatetruecolor')) $thumbImg = imagecreatetruecolor($width, $height); else $thumbImg = imagecreate($width, $height); // 複製圖片 if(function_exists("ImageCopyResampled")) imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth,$srcHeight); else imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $width, $height, $srcWidth,$srcHeight); if('gif'==$type || 'png'==$type) { //imagealphablending($thumbImg, false);//取消預設的混色模式 //imagesavealpha($thumbImg,true);//設定儲存完整的 Alpha 色板資訊 $background_color = imagecolorallocate($thumbImg, 0,255,0); // 指派一個綠色 imagecolortransparent($thumbImg,$background_color); // 設定為透明色,若注釋掉該行則輸出綠色的圖 } // 對jpeg圖形設定隔行掃描 if('jpg'==$type || 'jpeg'==$type) imageinterlace($thumbImg,$interlace); //$gray=ImageColorAllocate($thumbImg,255,0,0); //ImageString($thumbImg,2,5,5,"ThinkPHP",$gray); // 產生圖片 $imageFun = 'image'.($type=='jpg'?'jpeg':$type); $length = strlen("00.".$type) * (-1); $_type = substr($image,-4); $length = ($type != $_type ? $length+1 : $length); //裁剪 if ($suofang==1) { $thumbname01 = substr_replace($image,"01.".$type,$length); //大頭像 $thumbname02 = substr_replace($image,"02.".$type,$length); //小頭像 $imageFun($thumbImg,$thumbname01,100); $imageFun($thumbImg,$thumbname02,100); $thumbImg01 = imagecreatetruecolor(190,195); imagecopyresampled($thumbImg01,$thumbImg,0,0,$_POST['x'],$_POST['y'],190,195,$_POST['w'],$_POST['h']); $thumbImg02 = imagecreatetruecolor(48,48); imagecopyresampled($thumbImg02,$thumbImg,0,0,$_POST['x'],$_POST['y'],48,48,$_POST['w'],$_POST['h']); $imageFun($thumbImg01,$thumbname01,100); $imageFun($thumbImg02,$thumbname02,100);// unlink($image); imagedestroy($thumbImg01); imagedestroy($thumbImg02); imagedestroy($thumbImg); imagedestroy($srcImg); return array('big' => $thumbname01 , 'small' => $thumbname02); //返回包含大小頭像路徑的數組 }else{ if($is_save == false){ //縮圖覆蓋原圖,縮圖的路徑還是原圖路徑 $imageFun($thumbImg,$image,100); }else{ $thumbname03 = substr_replace($image,"03.".$type,$length); //縮圖與原圖同時存在, $imageFun($thumbImg,$thumbname03,100); imagedestroy($thumbImg); imagedestroy($srcImg); return $thumbname03 ; //返回縮圖的路徑,字串 } } } return false; }}
以上就是本文的全部內容,希望對大家學習php程式設計有所協助。
http://www.bkjia.com/PHPjc/1127895.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127895.htmlTechArticlephp簡單的上傳類分享,php上傳分享 本文執行個體為大家分享了php上傳類,供大家參考,具體內容如下 phpclass UploadFile{ var $inputName; //控制項名 var...