您的位置:首页 > 其它

自己写的一个简易单文件上传类

2012-12-05 00:00 232 查看
html上传表单:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>

<body>
<form method="post" action="up.php" enctype='multipart/form-data'>
<span>文件:</span><input type='file' name='file' ><br>
<input type='submit' value='上传' ><br>
</form>

</body>
</html>

处理上传后的php文件

<?php
if(isset($_FILES['file'])){
include 'uploadFile.class.php';
$up=new uploadFile('file');//file为input的name值
$up->setAllowTypes('jpg,jpeg');//手动设置允许上传的类型为jpg,jpeg
$up->setAllowMaxSize(4);//手动设置上传的最大容量为4mb
if(!!$res=$up->upload()){
echo $res;
echo '上传文件成功';
}else{
echo $up->getError();
echo '上传失败';
}
}

?>

文件上传类:

<?php
//水平有限,目前只有单文件上传
class uploadFile{
private $allowTypes='jpg,jpeg,gif,bmp';//允许上传的文件类型
private $allowMaxSize=1;//允许文件的最大容量,1为1mb的意思
private $_file;//存在上传后的数组信息
private $error_num;//错误代码
private $error_info=array(
0=>'成功',
1=>'大小超过upload_max_filesize',
2=>'大小超过MAX_FILE_SIZE',
3=>'文件只被部分上传',
4=>'没有上传任何文件',
6=>'没有指定upload_tmp_dir目录',
7=>'文件写入磁盘错误',
//	8=>'该类型文件不允许上传',
//	9=>'文件太大',
10=>'文件不是通过http post上传的',
11=>'文件移动失败',
);//错误信息

public function __construct($name){//传入文件input中的name值
$this->_file=$_FILES[$name];
}
//上传操作
public function upload(){
//上传失败
if($this->_file['error']>0){
$this->error_num=$this->_file['error'];
return false;
}
//类型不通过
if(!$this->checkType()){
$this->error_num=8;
$this->error_info[8]='只能是以下类型文件:'.$this->allowTypes;
return false;
}
//大小超过最大值
if(!$this->checkSize()){
$this->error_num=9;
$this->error_info[9]='文件最大不能超过:'.$this->allowMaxSize.'mb';
return false;
}
//文件不是通过http post上传的
if(!is_uploaded_file($this->_file['tmp_name'])){
$this->error_num=10;
return false;
}
$newdir='./images'.date('/Ym/d').'/';
if(!is_dir($newdir)){
mkdir($newdir,0777,true);//创建存放图片的目录
}
$newpath=$newdir.$this->getRandName().'.'.$this->getFileType();
if(!move_uploaded_file($this->_file['tmp_name'],$newpath)){
$this->error_num=11;
return false;
}else{
return $newpath;
}

}
//检查文件类型是否符合
private function checkType(){
$type=explode(',',$this->allowTypes);
$filetype=$this->getFileType();
if(!in_array($filetype,$type)){
return false;
}else{
return true;
}
}

//获取文件类型
private function getFileType(){
$arr=pathinfo($this->_file['name']);
return strtolower($arr['extension']);
}

//检查文件大小
private function checkSize(){
$filesize=$this->_file['size'];
if($filesize>$this->allowMaxSize*1024*1024){
return false;
}else{
return true;
}
}

//随机文件名
private function getRandName(){
$str='abcdefghijklmnopqrstuvwxyz';
return substr(str_shuffle($str),0,8).time();
}
//获取错误信息
public function getError(){
return $this->error_info[$this->error_num];
}
//手动设置允许的文件上传类型
public function setAllowTypes($str){
$this->allowTypes=$str;
}
//手动设置最大上传大小
public function setAllowMaxSize($size){
$this->allowMaxSize=$size;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐