侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php简单的上传类分享

php  /  管理员 发布于 7年前   124

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

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程序设计有所帮助。

您可能感兴趣的文章:

  • PHP图片上传类带图片显示
  • PHP5+UTF8多文件上传类
  • php 图片上传类代码
  • php 文件上传类代码
  • ThinkPHP使用心得分享-上传类UploadFile的使用
  • PHP实现多图片上传类实例
  • 一个经典的PHP文件上传类分享
  • php可生成缩略图的文件上传类实例
  • php判断文件上传类型及过滤不安全数据的方法
  • PHP多文件上传类实例


  • 上一条:
    php图片上传类 附调用方法
    下一条:
    分享php多功能图片处理类
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客