怎么样上传PHP文件?

怎么样上传PHP文件?

本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:

<?php
class Test_Upload{
 
 protected $_uploaded = array();
 protected $_destination; 
 protected $_max = 1024000;
 protected $_messages = array();
 protected $_permited = array(
        'image/gif',
        'image/jpeg',
        'image/pjpeg',
        'image/png' 
 );
 protected $_renamed = false;
  
 /**
  * 
  * @param mix $path
  * 
  */
 public function __construct($path){
   
  if (!is_dir($path) || !is_writable($path)){
   throw new Exception("文件名不可写,或者不是目录!");
  }
  $this->_destination = $path;
  $this->_uploaded = $_FILES;
 }
 /**
  * 移动文件
  * 
  */
 public function move(){
   
  $filed = current($this->_uploaded); 
    
  $isOk = $this->checkError($filed['name'], $filed['error']);
  //debug ok
  if ($isOk){
   $sizeOk = $this->checkSize($filed['name'], $filed['size']);
   $typeOk = $this->checkType($filed['name'], $filed['type']);
   if ($sizeOk && $typeOk){
     
    $success = move_uploaded_file($filed['tmp_name'], $this->_destination.$filed['name']);
     
    if ($success){
     $this->_messages[] = $filed['name']."文件上传成功";
    }else {
     $this->_messages[] = $filed['name']."文件上传失败";
    }
   }
    
  }
 }
 /**
  * 查询messages数组内容 
  *
  */
 public function getMessages(){
  return $this->_messages;
 }
  
 /**
  * 检测上传的文件大小
  * @param mix $string
  * @param int $size
  */
 public function checkSize($filename, $size){
   
  if ($size == 0){
   return false;
  }else if ($size > $this->_max){
   $this->_messages[] = "文件超出上传限制大小".$this->getMaxsize();
   return false;
  }else { 
   return true;
  }
 }
  
 /**
  * 检测上传文件的类型
  * @param mix $filename
  * @param mix $type
  */
 protected function checkType($filename, $type){
  if (!in_array($type, $this->_permited)){
   $this->_messages[] = "该文件类型是不被允许的上传类型";
   return false;
  }else {
   return true;
  }
 }
  
 /**
  * 获取文件大小
  * 
  */
 public function getMaxsize(){
  return number_format($this->_max / 1024, 1).'KB';
 }
  
 /**
  * 检测上传错误
  * @param mix $filename
  * @param int $error
  * 
  */
 public function checkError($filename, $error){
  switch ($error){
   case 0 : return true;
   case 1 :
   case 2 : $this->_messages[] = "文件过大!"; return true;
   case 3 : $this->_messages[] = "错误上传文件!";return false;
   case 4 : $this->_messages[] = "没有选择文件!"; return false;
   default : $this->_messages[] = "系统错误!"; return false;
  }
 }
}
?>

希望本文所述对大家的php程序设计有所帮助。