文件上传类
复制内容到剪贴板
代码:
<?php
/**
* @author 随风
* 参数说明tmpUpFile=》上传的文件名(此处,可以使用$_FILES['myFile']['name']来代替)
* $nameMode=》上传的文件(此处,可以使用$_FILES['myFile']['tmp_ame']来代替
* $upLoadMode=》文件上传模式(1为使用原文件的名称,有可能因为相同文件名已经存在而导致上传失败;0为使用系统命名方式,不会出现已经存在相同文件名的情况)
* $allowFileType=》允许上传的文件类型后缀组成的字符串,如"gifjpgpng"
* $maxFileSize=》允许上传的文件的最大大小,单位k
*/
class upLoad{
private $upFileName,$tmpUpFile,$nameMode,$allowFileType,$maxFileSize;
public $newFileName;
function __construct($upFile,$tmpUpFile,$upLoadMode){
$this->upFileName=$upFile;
$this->tmpUpFile=$tmpUpFile;
$this->nameMode=$upLoadMode;
}
public function setAllowType($typeString){ //指定允许上传的文件格式
$this->allowFileType=strtolower($typeString);
}
public function setUploadDir($dir){
if(substr($dir,strlen($dir)-1,1)!="/"){ //如果目录最后一个字符不是"/",则自动添加一个"/"
$this->uploadDir = $dir."/";
}else{
$this->uploadDir = $dir;
}
if (!is_dir($this->uploadDir)){
mkdir($this->uploadDir); //如果目录不存在,则创建目录
}
}
public function getFileType(){ //获取文件类型
$info=explode(".",$this->upFileName);
$id=sizeof($info)-1; //获取最后一个点号之后的字符串(文件格式)
return $info[$id];
}
public function setMaxFileSize($size){
$this->maxFileSize = 1024*$size; //$size单位是k,先要转换成字节
}
private function checkFileType(){ //检查是否是允许上传的文件格式
return !stristr($this->allowFileType,$this->getFileType())?false:true;
}
private function checkFileSize(){ //检查文件大小是否超出限制
return filesize($this->tmpUpFile) <= $this->maxFileSize?true:false;
}
private function makeNewFileName(){ //生成新文件名
if($this->nameMode==1){
$this->newFileName = $this->uploadDir.date("YmdHis").".".$this->getfileType(); //按照时间重新命名
}else{
$this->newFileName = $this->uploadDir.$this->upFileName; //使用原文件名
}
}
public function saveFile(){ //保存文件
$err = array(
"exist" => "<font font-size=\"12\" font-color=\"red\">已经存在相同的文件名,请改名后<a href=\"{$_SERVER['PHP_SELF']}\">再上传</a></font>",
"sizeErr" => "<font font-size=\"12\" font-color=\"red\">文件大小超过系统设置,请确认后<a href=\"{$_SERVER['PHP_SELF']}\">再上传</a></font>",
"notAllowed" => "<font font-size=\"12\" font-color=\"red\">不允许上传此类型文件,请确认后<a href=\"{$_SERVER['PHP_SELF']}\">再上传</a></font>"
);
$this->makeNewFileName();
if(file_exists($this->newFileName)){
echo $err['exist'];
return false;
}
if(!$this->checkFileSize()){
echo $err['sizeErr'];
return false;
}
if(!$this->checkFileType()){
echo $err['notAllowed'];
return false;
}
move_uploaded_file($this->tmpUpFile,$this->newFileName);
@unlink($this->tmpUpFile);
return file_exists($this->newFileName)?true:false;
}
}
?>调用方式:
$uploadDir = "../upLoad/";
$typeFilter = "gifjpgpngbmp";
$maxSize = 1024; //允许上传1M的文件
$upload = new upLoad($_FILES['upFile']['name'],$_FILES['upFile']['tmp_name'],1);
$upload->setAllowType($typeFilter);
$upload->setMaxFileSize($maxSize);
$upload->setUploadDir($uploadDir);
if($upload->saveFile()){
echo "图片上传成功,点击<a href=\"upLoad.php\">这里重新上传</a>";
}
}
[
本帖最后由 随风 于 2008-3-28 09:00 编辑 ]