PHP实现的多文件上传类及用法示例,
PHP实现的多文件上传类及用法示例,
本文实例讲述了PHP实现的多文件上传类及用法。分享给大家供大家参考,具体如下:
1、upFiles.css.php 文件
<?php class UploadFiles{ private $maxsize = '1000000'; //允许上传文件最大长度 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型 private $israndfile = true;//是否随机文件名 private $filepath;//上传路径 private $originName;//上传的源文件 private $tmpfileName;//临时文件名 private $newfileName;//新文件名 private $fileSize;//文件大小 private $fileType;//文件类型 private $errorNum = 0;//错误号 private $errorMessg = array();//错误消息 //对成员初始化 function __construct($options = array()){ foreach($options as $key=>$val){ $key = strtolower($key); //查看传进来的数组里下标是否与成员属性相同 //print_r(array_keys(get_class_vars(get_class($this)))); if(!in_array($key,array_keys(get_class_vars(get_class($this))))){ continue; }else{ $this->setOption($key,$val); } } } private function setOption($key,$val){ $this->$key = $val; //echo $this->errorNum."<br>"; } //检查文件上传路径 private function checkfilePath(){ //echo $this->filepath; if(empty($this->filepath)){ $this->setOption('errorNum',"-5"); return false; } if(!file_exists($this->filepath) || !is_writable($this->filepath)){ if(!@mkdir($this->filepath,0755)){ $this->setOption('errorNum','-4'); return false; } } return true; } //获取错误信息 private function getError(){ $str = "上传文件{$this->originName}出错---"; switch($this->errorNum){ case 4; $str .= "没有文件被上传";break; case 3; $str .= "文件只被部分上传";break; case 2; $str .= "超过文件表单允许大小";break; case 1; $str .= "超过php.ini中允许大小";break; case -1; $str .= "未允许的类型";break; case -2; $str .= "文件过大,不能超过".$this->maxsize."个字节";break; case -3; $str .= "上传失败";break; case -4; $str .= "建立文件上传目录失败";break; case -5; $str .= "必须指定上传路径";break; default; $str .= "未知错误"; } return $str."<br>"; } //检查文件类型 private function checkfileType(){ //echo $this->fileType; if(!in_array(strtolower($this->fileType),$this->allowtype)){ $this->setOption('errorNum','-1'); return false; }else{ return true; } } //检查文件大小 private function checkfileSize(){ if($this->fileSize > $this->maxsize){ $this->setOption('errorNum','-2'); return false; }else{ return true; } } //处理随机文件名称 private function prorandFile(){ $ch = $this->israndfile; if($ch == 'true'){ return true; }else{ return false; } } // private function setFiles($name="",$tmp_name="",$size="",$error=""){ //检查上传路径 if(!$this->checkfilePath()){ //$this->errorMessg = $this->getError(); return false; } //echo $error."<br>"; if($error){ $this->setOption('errorNum',$error); return false; } $arrstr = explode('.',$name); $type = end($arrstr); $this->setOption('originName',$name); $this->setOption('fileSize',$size); $this->setOption('fileType',$type); $this->setOption('tmpfileName',$tmp_name); return true; } //检查是否有文件上传 function checkFile($formname){ if(!@$_FILES[$formname]){ $this->setOption('errorNum',4); return false; }else{ return true; } } //上传文件 function uploadeFile($formname){ if(!$this->checkFile($formname)){ $this->errorMessg = $this->getError(); return false; } $return = true; $name = @$_FILES[$formname]['name']; $tmp_name = @$_FILES[$formname]['tmp_name']; $size = @$_FILES[$formname]['size']; $error = @$_FILES[$formname]['error']; //$type = $_FILES[$formname]['type']; if(is_array($name)){ $errors = array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ if(!$this->checkfileSize() || !$this->checkfileType()){ $errors[] = $this->getError(); $return = false; } }else{ $errors[] = $this->getError(); $return = false; } if(!$return) $this->setFiles(); } if($return){ $newfileN = array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ if(!$this->copyFile()){ $errors[] = $this->getError(); $return = false; }else{ $newfileN[] = $this->newfileName; } } $this->newfileName = $newfileN; } } //print_r($errors); $this->errorMessg = $errors; //echo $errors; return $return; }else{ if($this->setFiles($name,$tmp_name,$size,$error)){ $return = true; if($error) var_dump($error); if($this->checkfileSize() && $this->checkfileType()){ }else{ $return = false; } }else{ $return = false; } if(!$return){ $this->errorMessg = $this->getError(); } return $return; } } //获取上传后的文件名 function getnewFile(){ return $this->newfileName; } //把文件拷贝到指定的路径 function copyFile(){ $filepath = rtrim($this->filepath,'/')."/"; if(!$this->errorNum){ if($this->prorandFile()){ $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType; }else{ $this->newfileName = $this->originName; } if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){ $this->setOption('errorNum',-3); return false; }else{ return true; } }else{ return false; } } //上传错误后返回的消息 function gteerror(){ $err = $this->errorMessg; return $err; } } ?>
2、使用方法
uploade.php 文件:
<?php //print_r($_FILES['spic']); header('Content-Type:text/html;charset=utf-8'); //if(@$_FILES['spic'])echo "ddddddddd";; include('upFiles.css.php'); $upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000')); if($upfile ->uploadeFile('spic')){ $arrfile = $upfile ->getnewFile(); foreach($arrfile as $v){ echo $v,"<br/>"; } echo "上传成功!"; }else{ $err = $upfile ->gteerror(); if(is_array($err)){ foreach($err as $v1){ echo $v1,"<br/>"; } }else{ echo $err; } //var_dump($err); } //var_dump($upfile); ?>
HTML 文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function Check(){ //alert('dddd'); for(i=1; i<9; i++){ if(document.getElementById('v'+i).value == ''){ document.getElementById('v'+i).name = 'uu'; } } } </script> </head> <body> <form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data"> <input type="file" name="spic[]" id="v1" /><br/> <input type="file" name="spic[]" id="v2" /><br/> <input type="file" name="spic[]" id="v3" /><br/> <input type="file" name="spic[]" id="v4" /><br/> <input type="file" name="spic[]" id="v5" /><br/> <input type="file" name="spic[]" id="v6" /><br/> <input type="file" name="spic[]" id="v7" /><br/> <input type="file" name="spic[]" id="v8" /><br/> <input type="submit" name="sub" value="提交" onclick="return Check()" /> <input type="reset" name="res" value="重填" /> </form> </body> </html>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

To work on file upload we are going to use the form helper. Here, is an example for file upload.

Validator can be created by adding the following two lines in the controller.

Logging in CakePHP is a very easy task. You just have to use one function. You can log errors, exceptions, user activities, action taken by users, for any background process like cronjob. Logging data in CakePHP is easy. The log() function is provide

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP is an open source MVC framework. It makes developing, deploying and maintaining applications much easier. CakePHP has a number of libraries to reduce the overload of most common tasks.
