Home  >  Article  >  Backend Development  >  PHP file upload class example

PHP file upload class example

墨辰丷
墨辰丷Original
2018-06-06 16:49:532277browse

This article mainly introduces PHP file upload class examples. Interested friends can refer to it. I hope it will be helpful to everyone.

The following is the code to share with you:

<?php
define(&#39;NO_FILE&#39;, &#39;不存在上传文件&#39;);
define(&#39;NOT_ALLOW_EXT&#39;, &#39;文件类型不在允许范围内&#39;);
define(&#39;NOT_ALLOW_SIZE&#39;, &#39;文件大小不在允许范围内&#39;);
define(&#39;HAS_THE_FILE&#39;, &#39;该文件已经存在&#39;);
define(&#39;UPLOAD_FAILED&#39;, &#39;上传失败&#39;);
define(&#39;UPLOAD_SUCCESS&#39;, &#39;上传成功&#39;);
class file_uploader
{
  var $_file;
  var $_filesize;
  var $_fileext;
  var $_filedir;
  var $_filename;
  var $_filetmpname;
  
  var $allowsize;
  var $allowext;
  
  var $neednewname;
  var $newname;
  var $syslang;
  
  var $report;
  
  function ready($filedir = &#39;&#39;, $file, $allowsize = &#39;&#39;, $allowext = &#39;&#39;, $neednewname = false, $report = 0){
    $this->_filedir = is_dir($filedir) ? $filedir : &#39;&#39;;
    if(empty($file) || !isset($file[&#39;size&#39;]) || $file[&#39;size&#39;] == 0) $this->error(NO_FILE);
    $this->_filesize = $file[&#39;size&#39;];
    $this->_filename = $file[&#39;name&#39;];
    $this->_filetmpname = $file[&#39;tmp_name&#39;];
    
    $this->allowsize = $allowsize;
    $this->allowext = $allowext;
    
    $this->neednewname = ($neednewname) ? true : false;
    $this->newname = &#39;&#39;;
    
    $this->report = $report;
  }
  
  function do_upload(){
    if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE);
    if($this->chk_ext()){
      $this->error(NOT_ALLOW_EXT);
      return &#39;&#39;;
    }
    if($this->chk_size()){
      $this->error(NOT_ALLOW_SIZE);
      return &#39;&#39;;
    }
    if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext();
    if($this->chk_hasfile()){
      $this->error(HAS_THE_FILE);
      return &#39;&#39;;
    }
    $filename = empty($this->newname) ? @iconv(&#39;utf-8&#39;,&#39;gb2312&#39;,$this->_filename) : $this->newname;
    @chmod($this->_filedir.$filename, 0777);
    if(move_uploaded_file($this->_filetmpname, $this->_filedir.$filename)){
      return $this->result();
    }else{
      $this->error(UPLOAD_FAILED);
      return &#39;&#39;;
    }
  }
  
  function chk_ext(){
    if(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;
    return true;
  }
  
  function chk_size(){
    if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false;
    return true;
  }
  
  function get_filesize(){
    return $this->_filesize;
  }
  
  function get_fileext(){
    return substr($this->_filename,strrpos($this->_filename,".")+1);
  }
  
  function generate_name(){
    return substr(md5(time()),26);
  }
  
  function chk_hasfile(){
    return is_file($this->_filedir.$this->_filename);
  }
  
  function error($tip){
    echo $tip;
  }
  
  function result(){
    if($this->report){
      $filename = empty($this->newname) ? $this->_filename : $this->newname;
      $arr = array(&#39;filename&#39; => $filename, &#39;filesize&#39; => $this->_filesize, &#39;tip&#39; => UPLOAD_SUCCESS);
      return $arr;
    }else{
      return UPLOAD_SUCCESS;
    }
  }
}
/***使用方法与参数说明***/
/***
  第一个参数$dir 为上传文件存放的路径
   第二个参数为$_FILES 为你那个上传文件变量
   第三个参数允许文件大小 单位为MB
  第四个参数允许的文件类型 格式为jpg|png|gif
  第五个参数是否需要生成新的文件名
   第六个参数为返回的提示格式 0为直接提示上传正确 1则返回一个数组array(&#39;filename&#39; => $filename, &#39;filesize&#39; => $this->_filesize, &#39;tip&#39; => UPLOAD_SUCCESS);
***/
//require("类文件");
//$u = new file_uploader;
//$u->ready($dir, $_FILES[&#39;upload_file&#39;], false, false, true, 0);
//echo $u->do_upload();
?>

Calling method
The code is as follows

$dir = &#39;upload/&#39;;
  require("upload_class.php");
  $u = new file_uploader;
  $u->ready($dir, $_FILES[&#39;upload_file&#39;], false, false, true, 0);
  echo $u->do_upload();

Summary: The above is the entire article Content, I hope it will be helpful to everyone’s study.

Related recommendations:

php uses curl to obtain data through a proxy

Several methods for PHP to obtain user access IP addresses Detailed explanation

Detailed explanation of commonly used array operation methods in PHP

The above is the detailed content of PHP file upload class example. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn