zoukankan      html  css  js  c++  java
  • 文件上传类

    有自动生成路径的方法,自动生成名字的方法,上传的方法

    <?php
    defined('ACC')||exit('无权访问');
    
    /*
    上传文件类
    配置允许的后缀
    配置允许的大小
    随机生成目录
    随机生成文件名
    
    获取文件后缀
    判断文件的后缀
    良好的报错支持
    
    */
    
    class upTool{
    	protected $allowExt='jpg,jpeg,gif,bmp,png';
    	protected $maxSize=1;//m为单位
    	protected $file=null;
    
    	protected $errno=0;//错误代码
    	protected $error=array(
    		0=>'无错',
    		1=>'上传文件超出系统限制',
    		2=>'上传文件大小超出网页表单页面',
    		3=>'文件只有部分被上传',
    		4=>'没有文件被上传',
    		6=>'找不到临时文件夹',
    		7=>'文件写入失败',
    		8=>'不允许的文件后缀',
    		9=>'文件大小超出类的允许范围',
    		10=>'创建目录失败',
    		11=>'移动失败'
    	);
    	
    
    	public function up($key){
    		if(isset($FILES[$key])){
    			return false;
    		}
    		$f=$_FILES[$key];
    		//检查上传有没有成功
    		if($f['error']){
    			$this->errno=$f['error'];
    			return false;
    		}
    		//获取后缀
    		$ext=$this->getExt($f['name']);
    
    		//检查后缀
    		if(!$this->isAllowExt($ext)){
    			$this->errno=8;
    			return false;
    		}
    
    		//检查大小
    		if(!$this->isAllowSize($f['size'])){
    			$this->errno=9;
    			return false;
    		}
    
    		//上传
    
    		//创建目录
    		$dir=$this->mk_dir();
    		if($dir==false){
    			$this->errno=10;
    			return false;
    		}
    		//生成随机文件名
    		$newname=$this->randName().'.'.$ext;
    		$dir=$dir.'/'.$newname;
    		//移动
    		if(!move_uploaded_file($f['tmp_name'],$dir)){
    			$this->errno=11;
    			return false;
    		}
    		return str_replace(ROOT,'',$dir);
    
    	}
    	public function getErr(){
    		return $this->error[$this->errno];
    	}
    	protected function getEXT($file){
    		$tmp=explode('.',$file);
    		return end($tmp);
    	}
    	protected function isAllowExt($ext){
    		return in_array(strtolower($ext),explode(',',strtolower($this->allowExt)));
    	}
    	protected function isAllowSize($size){
    		return $size<=$this->maxSize*1024*1024;
    	}
    
    	//按日期创建目录
    	protected function mk_dir(){
    		$dir=ROOT.'data/images/'.date('Ym/d');
    
    		if(is_dir($dir)||mkdir($dir,0777,true)){
    			return $dir;
    		}else{
    			return false;
    		}
    	}
    	//随机生成文件名
    	function randName($length=6){
    		$str='abcdefghijklmnopqrstuvwxyz0123654789';
    		return substr(str_shuffle($str),0,$length);
    	}
    	//动态配置信息
    	public function addExt($ext){
    		$this->allowExt=$this->allowExt.','.$ext;
    	}
    	public function setSize($size){
    		$this->maxSize=$size;
    	}
    }
    
    ?>
    
  • 相关阅读:
    Trie图
    Bestcoder Round#45
    Codeforces Round#308
    bestcoder44#1002
    LCA最近公共祖先 Tarjan离线算法
    HYSBZ 1269文本编辑器 splay
    NOI2005维修数列 splay
    hdu3487 伸展树(区间搬移 区间旋转)
    poj3580 伸展树(区间翻转 区间搬移 删除结点 加入结点 成段更新)
    hdu1890 伸展树(区间反转)
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4782305.html
Copyright © 2011-2022 走看看