php简单的上传类分享

本文实例为大家分享PHP上传类,供大家参考,具体内容如下

rush:PHP;"> 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;
}

//<a href="https://www.jb51.cc/tag/zhongmingming/" target="_blank" class="keywords">重命名</a>
if($this->isRename){
  $arrTmp = pathinfo($_FILES[$this->inputName]['name']);
  $extension = strtolower($arrTmp['extension']);
  $file_newname = date("YmdHis").rand(1000,9999)."00.".$extension; //<a href="https://www.jb51.cc/tag/zhongmingming/" target="_blank" class="keywords">重命名</a>新<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>, 00表示为<a href="https://www.jb51.cc/tag/shangchuan/" target="_blank" class="keywords">上传</a>的为原图
}else{
  $file_newname = $_FILES[$this->inputName]['name'];
}

if(!file_exists($this->saveDir)){    //判断保存目录是否存在
  mkdir($this->saveDir,0777,true);  //建立保存目录
}

//移动<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>
$result = move_uploaded_file($_FILES[$this->inputName]['tmp_name'],$this->saveDir."/".$file_newname);

if($result){
  $path = $this->savePath = $this->saveDir.$file_newname;    //<a href="https://www.jb51.cc/tag/wenjian/" target="_blank" class="keywords">文件</a>的成功保存路径
  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);

  //创建<a href="https://www.jb51.cc/tag/suoluetu/" target="_blank" class="keywords">缩略图</a>
  if($type!='gif' && function_exists('imagecreatetruecolor'))
    $thumbImg = imagecreatetruecolor($width,$height);
  else
    $thumbImg = imagecreate($width,$height);

  // 复制<a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>
  if(function_exists("Image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yResampled"))
    image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yresampled($thumbImg,$srcImg,$width,$height,$srcWidth,$srcHeight);
  else
    image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yresized($thumbImg,$srcHeight);
  if('gif'==$type || 'png'==$type) {
    //imagealphablending($thumbImg,false);//取消<a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认的混色模式
    //imagesavealpha($thumbImg,true);//设定保存完整的 alpha 通道信息
    $background_color = imagecolorallocate($thumbImg,255,0); // 指派<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>绿色
    imagecolortransparent($thumbImg,$background_color); // 设置为透明色,若注释掉该行则<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>绿色的图
  }
  // 对jpeg图形设置隔行扫描
  if('jpg'==$type || 'jpeg'==$type)   imageinterlace($thumbImg,$interlace);
  //$gray=ImageColorAllocate($thumbImg,0);
  //ImageString($thumbImg,2,5,"Think<a href="https://www.jb51.cc/tag/PHP/" target="_blank" class="keywords">PHP</a>",$gray);
  // <a href="https://www.jb51.cc/tag/shengcheng/" target="_blank" class="keywords">生成</a><a href="https://www.jb51.cc/tag/tupian/" target="_blank" class="keywords">图片</a>
  $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);
    image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yresampled($thumbImg01,$thumbImg,$_POST['x'],$_POST['y'],190,195,$_POST['w'],$_POST['h']);

    $thumbImg02 = imagecreatetruecolor(48,48);
    image<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>yresampled($thumbImg02,48,$_POST['h']);

    $imageFun($thumbImg01,100);
    $imageFun($thumbImg02,100);

// unlink($image);
imagedestroy($thumbImg01);
imagedestroy($thumbImg02);
imagedestroy($thumbImg);
imagedestroy($srcImg);

    return array('big' => $thumbname01,'small' => $thumbname02);  //返回包含大小头像路径的数组
  }else{
    if($is_save == false){                      //<a href="https://www.jb51.cc/tag/suoluetu/" target="_blank" class="keywords">缩略图</a>覆盖原图,<a href="https://www.jb51.cc/tag/suoluetu/" target="_blank" class="keywords">缩略图</a>的路径还是原图路径
      $imageFun($thumbImg,$image,100);
    }else{
      $thumbname03 = substr_replace($image,"03.".$type,$length);  //<a href="https://www.jb51.cc/tag/suoluetu/" target="_blank" class="keywords">缩略图</a>与原图<a href="https://www.jb51.cc/tag/tongshicunzai/" target="_blank" class="keywords">同时存在</a>,
      $imageFun($thumbImg,$thumbname03,100);

      imagedestroy($thumbImg);
      imagedestroy($srcImg);
      return $thumbname03 ;          //返回<a href="https://www.jb51.cc/tag/suoluetu/" target="_blank" class="keywords">缩略图</a>的路径,字符串
    }
  }

 }
 return false;

}
}

以上就是本文的全部内容,希望对大家学习PHP程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...