自己编写的久经考验的文件上传类,可以直接使用
<?php defined('ACC')||exit('你没有访问权限'); /*一个上传类需要的知识点 1.判断允许上传的后缀名 2.判断允许上传的最大限制 3.创建目录 4.创建随机文件名 5.上传 */ class upTool{ protected $allowExt='jpg,png,jpeg'; protected $maxSize=1; protected $errno = 0; // 错误代码 protected $error = array( 0=>'无错', 1=>'上传文件超出系统限制', 2=>'上传文件大小超出网页表单页面', 3=>'文件只有部分被上传', 4=>'没有文件被上传', 6=>'找不到临时文件夹', 7=>'文件写入失败', 8=>'不允许的文件后缀', 9=>'文件大小超出的类的允许范围', 10=>'创建目录失败', 11=>'移动失败' ); //根据后面的一系列方法开始上传 public function upload($key){ //1,先判断是否存在上传文件 if(!isset($_FILES[$key])){ return false; } //2.如果有的话,接下来判断是否上传成功 $f=$_FILES[$key]; if($f['error']){ $this->errno=$f['error']; return false; } //3.判断文件后缀是否是允许的 $ext=$this->getExt($f['name']); if(!$this->isAllowExt($ext)){ $this->errno=8; return false; } //4.判断上传大小 if(!$this->isAllowSize($f['size'])){ $this->errno=9; return false; } //5.判断完毕后,开始创建路径 if(!($dir=$this->mk_dir())){ $this->errno=10; return false; } $path=$dir.$this->randName().'.'.$ext; //6.将上传文件移动到制定的路径中 if(!move_uploaded_file($f['tmp_name'],$path)){ $this->errno=11; return false; } return str_replace(ROOT,'',$path); } //获取错误信息 public function getErr(){ return $this->error[$this->errno]; } //获取上传文件的后缀名 protected function getExt($file){ $ext=explode('.',$file); return end($ext); } //判断是否是允许的文件后缀名 protected function isAllowExt($ext){ $arr=explode(',',strtolower($this->allowExt)); return in_array(strtolower($ext),$arr); } //判断是否是允许上传的大小 protected function isAllowSize($size){ return $size<=$this->maxSize*1024*1024; } //获取随机的文件名 protected function randName($length=6){ $str='abcdefghigklmnopqrstuvwxyz0123456789'; return substr(str_shuffle($str),0,$length); } //创建存贮路径 protected function mk_dir(){ $dir=ROOT.'data/images/'.date('ym/d/',time()); if(is_dir($dir)||mkdir($dir,0777,true)){ return $dir; } } //设置允许的文件后缀 public function setExt($ext){ return $this->allowExt=$ext; } //设置文件上传的最大值 public function setMax($max){ return $this->maxSize=$max; } } ?>
这是我自己写的一个文件上传类,先在上传之前写几个上传需要的方法。然后一步一步的调用方法,实现文件上传并且处理的功能。功能强大,步骤清晰,思路严谨。该工具类久经考验,可以直接拿来使用。同时,也可以用来学习用,可以帮助您进一步理解面向对象编程的魅力之所在。接下来我将该工具类分享给大家。