巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

php文件上传类的分享

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:31 阅读数: 112

本文实例为大师分享了php文件上传类的详细代码,供大师参考,详细内容以下

<?php
$upload = new UpLoad();
$upload->uploadFile("fm");
/*打印毛病信息*/
// var_dump($upload->errorNumber);
// var_dump($upload->errorInfo);
class UpLoad{
  //文件上传途径
  protected $path = "upload/";
  //许可文件上传的后缀
  protected $allowSuffix = ["jpg","jpeg",
  "gif","wbmp","png"];
  //mime范例 
  protected $allowMime =["image/jpg","image/jpeg",
  "image/gif","image/wbmp","image/png"];
  //许可上传的巨细
  protected $maxSize = 2000000;
  //是不是是启用默许的前缀
  protected $isRandName =true ;
  //文件的前缀
  protected $prefix = "up_";
  //毛病号和毛病信息
  protected $errorNumber;
  protected $errorInfo;
  //文件的信息
  //文件名
  protected $oldName;
  //文件的后缀
  protected $suffix;
  //文件的巨细
  protected $size;
  //文件的mime
  protected $mime;
  //文件的姑且文件的途径
  protected $tmpName;
  //文件新名字
  protected $newName;
  
  //机关体例
  //因为成员属性比拟多就用数组来显现
  public function __construct($arr =[]){
    foreach ($arr as $key=>$value){
      $this->setOption($key,$value);
    }
  }
  //判定$key是不是是我的成员属性,若是是就设置
  protected function setOption($key,$value){
    //获得一切的成员属性
    $keys = array_keys(get_class_vars(__CLASS__));
    if(in_array($key, $keys)){
      $this->$key = $value;
    }
  }
  //文件上传函数
  //key 便是input框中的name属性值
  public function uploadFile($key){
    //判定有不设置途径 path
    if(empty($this->path)){
      $this->setOption("errorNumber",-1 );
      return false;
    }
    //判定该途径是不是是存在是不是是可写
    if (!$this->check()){
      $this->setOption("errorNumber", -2);
      return false; 
    }
    //判定$_FILES外面的error信息是不是是为0,若是为0则申明文件信息在办事器端能够间接获得,提守信息保管到成员属性中
    $error = $_FILES[$key]["error"];
    if($error){
      $this->setOption("errorNumber", -3);
      return false;
    }else {
      //提取文件相干信息并且保管到成员属性中
      $this->getFileInfo($key);
    }
    //判定文件的巨细、mime、后缀是不是是合适
     if(!$this->checkSize() || !$this->checkMime()|| !$this->checkSuffix()){
       return false;
     }
    //获得新的文件名字
    $this->newName = $this->createNewName();
    //判定是不是是是上传文件,并且是挪动上传文件
    if(is_uploaded_file($this->tmpName)){
      if(move_uploaded_file($this->tmpName, $this->path.$this->newName)){
        return $this->path.$this->newName;
      }else {
        $this->setOption("errorNumber", -7);
        return false;
      }
    }else{
      $this->setOption("errorNumber", -6);
      return false;
    }
  }
  //检测文件夹是不是是存在,是不是是可写
  protected function check(){
    //文件夹不存在或不是目次。建立文件夹
    if(!file_exists($this->path) ||!is_dir($this->path)){
      return mkdir($this->path,0777,true);
    }
    //判定文件是不是是可写
    if(!is_writeable($this->path)){
      return chmod($this->path, 0777);
    }
    return true;
  }
  //按照key获得文件信息
  protected function getFileInfo($key){
    //获得文件的名字
    $this->oldName = $_FILES[$key]["name"];
    //获得文件的mime范例
    $this->mime = $_FILES[$key]["type"];
    //获得文件的姑且文件
    $this->tmpName = $_FILES[$key]["tmp_name"];
    //获得文件巨细
    $this->size = $_FILES[$key]["size"];
    //获得文件后缀
    $this->suffix = pathinfo($this->oldName)["extension"];
  }
  //判定文件巨细
  protected function checkSize(){
    if($this->size > $this->maxSize){
      $this->setOption("errorNumber", -3);
      return false;
    }
    return true;
  }
  //判定mime范例
  protected function checkMime(){
    if(!in_array($this->mime, $this->allowMime)){
      $this->setOption("errorNumber", -4);
      return false;
    }
    return true;
  }
  //判定后缀
  protected function checkSuffix(){
    if(!in_array($this->suffix, $this->allowSuffix)){
      $this->setOption("errorNumber", -5);
      return false;
    }
    return true;
  }
  //建立新名字
  protected function createNewName(){
    if($this->isRandName){
      $name = $this->prefix.uniqid().".".$this->suffix;
    }else {
      $name = $this->prefix.$this->oldName;
    }
    return $name;
  }
  public function __get($name){
    if($name == "errorNumber"){
      return $this->errorNumber;
    }elseif ($name == "errorInfo"){
      return $this->getErrorInfo();
    }
  }
  protected function getErrorInfo(){
    switch ($this->errorNumber){
    case -1:
      $str = "文件途径不设置";
      break;
    case -2:
      $str = "文件不是目次或不可写";
      break;
    case -3:
      $str = "文件跨越指定巨细";
      break;
    case -4:
      $str = "mime范例不合适";
      break;
    case -5:
      $str = "文件后缀不合适";
      break;
    case -6:
      $str = "不是上传文件";
      break;
    case -7:
      $str = "挪动失利";
      break;
    case 1:
      $str = "超越ini设置巨细";
      break;
    case 2:
      $str = "超越html表单巨细";
      break;
    case 3:
      $str = "文章只要局部上传";
      break;
    case 4:
      $str = "不文件上传";
      break;
    case 6:
      $str = "找不到姑且文件";
      break;
    case 7:
      $str = "文件写入失利";
      break;
    }
    return $str;
  }
}

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>文件上传</title>
</head>
<body>
<form action="UpLoad.php" method="post" enctype="multipart/form-data" >
   <input type="file" name="fm" value=""><br>
  <input type="submit" value="上传文件" /><br>
 
</form>
</body>
</html>

注重:input中的name必须和上传类中的uploadFile中是传值分歧!

更多出色内容请参考php文件上传操纵汇总停止进修。

以上便是本文的全数内容,但愿对大师的进修有所赞助,也但愿大师多多撑持网页设想。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

30
03月
PHP中->和=>的意义

简介:在进修PHP中,碰到了-和=这两个标记。 刚碰到这两个标记的时辰不晓得它们代表的寄义,在颠末百度后才发这两个标记的奥秘。 上面来看一下... >>概况

04
04月
餐饮创业,前期推行估算不够,若何把餐厅推行出

简介:对一些小餐饮店来讲,前期想要进入市场并不是件轻易事儿,因为前期不着名度,资金软弱,不能像大餐厅一样砸告白,可是不费钱,又怎样做营销... >>概况

01
05月
php中目次,文件操纵详谈

一、引论 在任何计较机装备中,文件是都是必须的东西,而在web编程中,文件的操纵一向是web法式员的头疼的处所,而,文件的操纵在cms体系中... >>概况

26
04月
YII2 完成多说话设置装备摆设的体例分享

媒介:因为我的YII2版本是2.0.7, 设置多说话时和其余教程有差别的处所, 以是想着清算下,便利本身今后须要的时辰和有须要的伴侣参考进修... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站