php教程

超轻量级php框架startmvc

适用于初学者的简易PHP文件上传类

更新时间:2020-03-06 07:55:52 作者:startmvc
本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:<?phpclassTest_Uploa

本文实例讲述了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程序设计有所帮助。

php文件上传 php图片上传类 php文件上传代码 php多文件上传类