本文实例为大家分享了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;//是否重命名,默认为truevar $errID = 0; //错误代码,默认为0var $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);elseimagecopyresized($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程序设计有所帮助。