ThinkPHP上传文件及如何判断上传数据是否重复

文件上传

   1.在ThinkPHP中使用上传功能无需进行特别处理,但要注意,要使用上传功能 表单中需要设置 enctype="multipart/form-data"。


   2.tp自带了上传文件的类,位置:Think/Upload.class.php。所以tp框架用起来是十分方便的。我们来看下upload方法的实现代码:

    //上传文件
  public function upload(){
     if(IS_GET){
        $this->display();
        exit;
     }
       $upload = new \Think\Upload();
       $upload->maxSize=0;//文件上传大小
       $upload->exts = array('csv');//文件后缀
       $upload->rootPath='./Public/Upload';//上传根目录
       $upload->savePath='/';


       //上传文件
       $info=$upload->upload();
       if(!$info){
        $this->error($upload->getError());
       }else{
         $this->success('上传成功'.$info['file']['savePath'].$info['file']['savename']);
     }

  }

  3.每个上传的文件是一个记录了下面信息的数组,文件上传成功后,就可以使用这些文件信息来进行其他的数据操作,例如保存到当前数据表或者单独的附件数据表。

ThinkPHP上传文件及如何判断上传数据是否重复_第1张图片

例如,下面表示把上传信息保存到数据表的字段:

$this->success('上传成功'.$info['file']['savePath'].$info['file']['savename']);

  4.如何判断上传文件的信息是否重复,首先要从文件中获取数据,如果存在则重复,不执行添加代码,如果不存在,则添加到数据库中。下面是一段判断学号上传是否重复的代码,上传成功执行这段代码即可

 $fp=fopen($file,'r');
    if($fp){
      $fields=array('no','name','sex');
      $model=M('newstudent');
      $arrNo = $model->getField('no',true);


      $arr=array();   
      while(($row=fgetcsv($fp,1000,","))!==false){
        $row=array_combine($fields, $row);
        if(in_array($row['no'], $arrNo)){
          echo $row['no'].'存在'.'
';
        }else{
          $arrNo[]=$row['no'];
          $arr[]=$row;
          echo $row['no'].'导入成功'.'
';
        } 
        if(count($arr)==1000){
          $model->addAll($arr);
          unset($arr);
        }
      }
      if(count($arr)>0){
        $model->addAll($arr);
      }
      $this->success('添加成功');
    }
  }

你可能感兴趣的:(php)