<?php/***说明: 批量文件上传*version 2.0*@author sanshi(叁石)*QQ: 35047205*MSN: sanshi0815@tom.com*Create 2007/5/11**/include_once(dirname(__FILE__)."/FileIO.class.php");class Upload{ //设置文件上传的最大量 var $uploadFileFize = 100; var $tempFileName = array(); var $uploadFileName = array(); function Upload() { $this->uploadFileFize = $this->uploadFileFize*1024; } function init($fileField,$fileType='img') { //同意上传的类型 $allowFile['img'] = array('jpg','bmp','jpeg'); $allowFile['file'] = array('rar','zip'); //取得类别 $fileType = strtolower($fileType); if($fileType!='img'&& $fileType!='file') $fileType='img'; //取得上传的文件属性 //print_r($_FILES); $files = $_FILES[$fileField]; for ($i=0;$i<count($files['name']);$i++) { $fileName = $files['name'][$i]; //文件名 if($fileName=="") continue; $this->uploadFileName[] = $fileName; $fileTemp = $files['tmp_name'][$i]; //临时文件名 $this->tempFileName[] = $fileTemp ; $fileSize = $files['size'][$i]; //文件大小 //取得文件后缀 $this->uploadFileType = FileIO::getFileType($fileName); //判断文件的大小 if($fileSize > $this->uploadFileFize) { goToError("文件最大 {$this->uploadFileFize} k! {$fileName} 超大"); return false; } //判断文件类型是否符合 if(!in_array($this->uploadFileType,$allowFile[$fileType])) { goToError("{$fileName} 文件类型不符合要求 只能是 ".implode(',',$allowFile[$fileType])); return false; } } return true; } //取得上传文件名 function getUploadFileName($uploadFile) { $name = ""; $name = date('Y-m/').date("Y,m,d,H,i,s")."_".$uploadFile; return $name; } //上传执行 function exec($upLoadDir) { //设置错误数组 $suc = array(); //处理目录字符串 $upLoadDir = preg_replace('////','/',$upLoadDir); //判断是否有/ if(substr($upLoadDir,0,-1)!="/") $upLoadDir.'/'; //判断目标文件是否为空 if(empty($this->tempFileName)) return false; for ($i=0;$i<count($this->tempFileName);$i++) { //创建目录 添加文件名 $fileName = $this->getUploadFileName($this->uploadFileName[$i]); //设置上传的物理路径 $upLoadFile = $upLoadDir.$fileName; //检查目录是否存在 $rUpLoadDir = dirname($upLoadFile); if(!FileIO::isDirExists($rUpLoadDir)) { if(!FileIO::createDir($rUpLoadDir)) { goToError("建立 {$rUpLoadDir} 目录失败!"); return false; } } //复值给目录默认文件 $this->uploadFileName[$i] = $fileName; //上传文件 if(@move_uploaded_file($this->tempFileName[$i],$upLoadFile)) { $suc[] = $this->uploadFileName[$i]; } } //驱除数组里相同的值,如果同时上传了同一个文件,上传的时候将覆盖 return array_unique($suc); }}/*此类作为一个多文件的长传类,就是一个文件,也要使用数组形式返回上传成功的文件此文件用了 FileIO 类里的,几个函数现在放在下面方便大家以后移植使用 //取得文件后缀 function getFileType($fileName) { return end(explode('.',$fileName)); } //建立目录 function createDir($dirName) { //echo $dirName;exit(); global $FILEERRORMSG; $dirName = str_replace("/","/",$dirName); $dirArr = explode('/',$dirName); $dirTemp = ""; foreach( (array)$dirArr as $dir ) { if( empty($dir) ) continue; $dirTemp.= $dir."/"; if( !is_dir($dirTemp) ) { if( !@mkdir($dirTemp,0777) ) { trigger_error($FILEERRORMSG[0],SystemExceptionType(2)); return false; } } } return true; } //检查目录是否存在 function isDirExists( $dirName ) { return file_exists( $dirName ) && is_dir( $dirName ); }*/?>