php通用实用文件上传类随机命名后缀限制

不多说直接上代码,支持随机命名,路径,文件大小,后缀限制 ?php class UploadFile{ //完整实例 $upload = new UploadFile(true, '../yuming/', 'xls|xlsx'); 随机命名、路径、允许的后缀 private $max_size =
不多说直接上代码,支持随机命名,路径,文件大小,后缀限制
 
<?php

  class UploadFile{ //完整实例 $upload = new UploadFile(true, '../yuming/', 'xls|xlsx'); 随机命名、路径、允许的后缀
    
	private $max_size   = '8000000'; //设置上传文件的大小,此为8M

    
    public function __construct($rand_name, $save_path, $allow_type){
      $this->rand_name = $rand_name;
      $this->save_path = $save_path;
      $this->allow_type = $this->get_allow_type($allow_type);
    }
    

	public function upload_file($file){
		
      $this->file_name   = $file['name'];
      $this->file_size   = $file['size'];
      $this->error     = $file['error'];
      $this->file_tmp_name = $file['tmp_name'];
      
      $this->ext = $this->get_file_type($this->file_name);
      
      switch($this->error){
        case 0: $this->msg = ''; break;
        case 1: $this->msg = '超出了php.ini中文件大小'; break;
        case 2: $this->msg = '超出了MAX_FILE_SIZE的文件大小'; break;
        case 3: $this->msg = '文件被部分上传'; break;
        case 4: $this->msg = '没有文件上传'; break;
        case 5: $this->msg = '文件大小为0'; break;
		case 6: $this->msg = '找不到临时文件夹'; break;
		case 7: $this->msg = '文件写入失败'; break;
        default: $this->msg = '上传失败'; break;
      }
	  
      if($this->error==0 && is_uploaded_file($this->file_tmp_name)){
        //检测文件类型
        if(in_array($this->ext, $this->allow_type)==false){
          $this->msg = '文件类型不正确';
          return false;
        }
        //检测文件大小
        if($this->file_size > $this->max_size){
          $this->msg = '文件过大';
          return false;
        }
		
		$this->set_file_name();
		$this->uploaded = $this->save_path.$this->new_name;
		
		if(move_uploaded_file($this->file_tmp_name, $this->uploaded)){
			$this->msg = '文件上传成功';
			return true;
		}else{
			$this->msg = '文件上传失败';
			return false;
		}
      }
    }
    
    /**
    * 设置上传后的文件名
    * 当前的毫秒数和原扩展名为新文件名
    */
    public function set_file_name(){
      if($this->rand_name==true){
        $a = explode(' ', microtime());
        $t = $a[1].($a[0]*1000000);
        $this->new_name = $t.'.'.($this->ext);
      }else{
        $this->new_name = $this->file_name;
      }
    }
    
    /**
    * 获取上传文件类型
    * @param string $filename 目标文件
    * @return string $ext 文件类型
    */
    public function get_file_type($filename){
      $ext = pathinfo($filename, PATHINFO_EXTENSION);
      return $ext;
    }
    
    /**
     * 获取可上传文件的类型
     */
    public function get_allow_type($allow_type){
      $s = array();
      $s = preg_split("/[\s,|;]+/", $allow_type);
      return $s;
    }
    
    //获取错误信息
    public function name(){
      return $this->new_name;
    }
	
	public function msg(){
      return $this->msg;
    }
	
	public function error(){
      return $this->error;
    }
  }

后端调用实例
 
require '../up.php'; //引入上面文件
	$file = $_FILES['file']; //取得传入文件
	$upload = new UploadFile(true, '../upl/', 'xls|xlsx'); //随机命名开启,保存路径,允许的文件类型
	$upload->upload_file($file); //上传开始

	if($upload->error() > 0){ //错误提取
		echo "Error: " . $upload->msg();
	}else{
		
		$xlsname=$upload->name(); //上传成功,文件名
}
  转载请注明:https://www.yooym.com/blog/jianzhanjiaocheng/tongyongjiaocheng/2019/0618/1624.html
------分隔线----------------------------
文章分类
推荐内容
  • php通用实用文件上传类随机命名后缀限制

    不多说直接上代码,支持随机命名,路径,文件大小,后缀限制 ?php class UploadFile{ //完整实例 $upload = new UploadFile(true, '../yuming/', 'xls|xlsx'); 随机命名、路径、...

  • 解决SSL因为使用RC4密码套件或支持弱Diffie-Hellman(DH)密钥交换降级为B

    解决SSL因为使用RC4密码套件或支持弱Diffie-Hellman(DH)密钥交换降级为B 服务器环境IIS7 通过修改注册表关闭不安全的支持 复制下列文件 保存为 reg格式 直接导...

  • 实现HTTP跳转到HTTPS 的另一种方法

    1 首先在您的网站下新建一个站点,名称随意,在属性中分配 TCP 端口为 80 , SSL 不分配 然后在属性》主目录下配置 将此资源的内容来自:改为重定向到...

  • SSL证书安装指南 - Winodws 2003 Server IIS 6.0

    S SL证书安装指南 - Winodws 2003 Server IIS 6.0 一旦您申请的SSL证书成功颁发,您会收到一个邮件通知您取回证书,点击邮件中的取回证书链接,就可以得到您的...

  • SSL证书安装指南 - IIS 7.0

    一、生成证书请求 1.进入IIS控制台 进入IIS控制台,并选择服务器的服务器证书设置选项。 2.添加证书请求 进入服务器证书配置页面,并选择“创建证书申...

  • 网页启用Gzip压缩 提高浏览速度

    Gzip压缩我很早已经就启用了,不过从未与大家分享过。近期由于备案问题,临时更换服务器,结果忘了启用Gzip压缩,周末利用空余时间启用了Gzip压缩,并...