作业帮 > PHP > 教育资讯

PHP文件上传类[1]

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 06:53:21 PHP
PHP文件上传类[1]
PHP文件上传类[1]PHP
【BK网络学院 - PHP】
PHPmail也没什么太大的进展,一直再研究那协议及命令。看到了一个挺好用的文件上传类。

class FileUpload {
private $filepath; //指定上传文件保存的路径
private $allowtype=array('gif', 'jpg', 'png', 'jpeg'); //充许上传文件的类型
private $maxsize=1000000; //允上传文件的最大长度 1M
private $israndname=true; //是否随机重命名, true false不随机,使用原文件名
private $originName; //源文件名称
private $tmpFileName; //临时文件名
private $fileType; //文件类型
private $fileSize; //文件大小
private $newFileName; //新文件名
private $errorNum=0; //错误号
private $errorMess=""; //用来提供错误报告



//用于对上传文件初使化
//1. 指定上传路径, 2,充许的类型, 3,限制大小, 4,是否使用随机文件名称
//让用户可以不用按位置传参数,后面参数给值不用将前几个参数也提供值
function __construct($options=array()){
foreach($options as $key=>$val){
$key=strtolower($key);
//查看用户参数中数组的下标是否和成员属性名相同
if(!in_array($key,get_class_vars(get_class($this)))){
continue;
}

$this->setOption($key, $val);
}


}



private function getError(){
$str="上传文件{$this->originName}时出错:";

switch($this->errorNum){
case 4: $str .= "没有文件被上传"; break;
case 3: $str .= "文件只被部分上传"; break;
case 2: $str .= "上传文件超过了HTML表单中MAX_FILE_SIZE选项指定的值"; break;
case 1: $str .= "上传文件超过了php.ini 中upload_max_filesize选项的值"; 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.'
';
}

//用来检查文件上传路径
private function checkFilePath(){
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', -4PHP