html
Untitled Document
uploade.php file
//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," ";
}
echo "Upload successful!";
}else{
$err = $upfile ->gteerror();
if(is_array($err)){
foreach($err as $v1){
echo $v1," ";
}
}else{
echo $err;
}
//var_dump($err);
}
//var_dump($upfile);
?>
upFiles.class.php upload class
class UploadFiles{ private $maxsize = '1000000'; //Maximum length of files allowed to be uploaded
private $allowtype = array('jpg','png','gif','jpeg');//Allow upload file types
private $israndfile = true;//Whether the file name is random
private $filepath;//upload path
private $originName; //Uploaded source file
private $tmpfileName;//Temporary file name
private $newfileName;//New file name
private $fileSize;//File size
private $fileType;//File type
private $errorNum = 0;//error number
private $errorMessg = array();//Error message
//Initialize members
function __construct($options = array()){
foreach($options as $key=>$val){
$key = strtolower($key);
//Check whether the subscript in the passed array is the same as the member attribute
//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." ";
}
//Check file upload path
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;
}
//Get error information
private function getError(){
$str = "Error uploading file {$this->originName}---";
switch($this->errorNum){
case 4; $str .= "No files were uploaded";break;
case 3; $str .= "The file was only partially uploaded";break;
case 2; $str .= "Exceeds the allowable size of the file form";break;
case 1; $str .= "Exceeds the allowed size in php.ini";break;
case -1; $str .= "Unallowed type";break;
case -2; $str .= "The file is too large and cannot exceed ".$this->maxsize." bytes";break;
case -3; $str .= "Upload failed";break;
case -4; $str .= "Failed to create file upload directory";break;
case -5; $str .= "The upload path must be specified";break;
default; $str .= "Unknown error";
}
Return $str." ";
}
//Check file type
private function checkfileType(){
//echo $this->fileType;
if(!in_array(strtolower($this->fileType),$this->allowtype)){
$this->setOption('errorNum','-1');
Return false;
}else{
Return true;
}
}
//Check file size
private function checkfileSize(){
if($this->fileSize > $this->maxsize){
$this->setOption('errorNum','-2');
Return false;
}else{
Return true;
}
}
//Process random file names
private function prorandFile(){
$ch = $this->israndfile;
if($ch == 'true'){
Return true;
}else{
Return false;
}
}
//
private function setFiles($name="",$tmp_name="",$size="",$error=""){
//Check the upload path
if(!$this->checkfilePath()){
//$this->errorMessg = $this->getError();
Return false;
}
//echo $error." ";
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
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
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;
}
}
//Message returned after upload error
function gteerror(){
$err = $this->errorMessg;
return $err;
}
}
?>
|