网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 封装好的php上传文件类
内容
    封装好的php上传文件类,具体代码如下:
    class FileUpload {
    private $filepath; //指定上传文件保存的路径
    private $allowtype=array('gif', 'jpg', 'png', 'jpeg'); //充许上传文件的类型
    private $maxsize=1000000; //允上传文件的最大长度 1M
    private $israndname=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="上传文件<font color='red'>{$this->originName}</font>时出错:";
    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.'<br>';
    }
    //用来检查文件上传路径
    private function checkFilePath(){
    if(empty($this->filepath)) {
    $this->setOption('errorNum', -5);
    return false;
    }
    if(!file_exists($this->filepath) || !is_writable($this->filepath)){
    if(, 0755)){
    $this->setOption('errorNum', -4);
    return false;
    }
    }
    return true;
    }
    //用来检查文件上传的大小
    private function checkFileSize() {
    if($this->fileSize > $this->maxsize){
    $this->setOPtion('errorNum', '-2');
    return false;
    }else{
    return true;
    }
    }
    //用于检查文件上传类型
    private function checkFileType() {
    if(in_array(strtolower($this->fileType), $this->allowtype)) {
    return true;
    }else{
    $this->setOption('errorNum', -1);
    return false;
    }
    }
    //设置上传后的文件名称
    private function setNewFileName(){
    if($this->israndname){
    $this->setOption('newFileName', $this->proRandName());
    } else {
    $this->setOption('newFileName', $this->originName);
    }
    }
    //设置随机文件名称
    private function proRandName(){
    $fileName=date("YmdHis").rand(100,999);
    return $fileName.'.'.$this->fileType;
    }
    private function setOption($key, $val){
    $this->$key=$val;
    }
    //用来上传一个文件
    function uploadFile($fileField){
    $return=true;
    //检查文件上传路径
    if(!$this->checkFilePath()){
    $this->errorMess=$this->getError();
    return false;
    }
    $name=$_FILES[$fileField]['name'];
    $tmp_name=$_FILES[$fileField]['tmp_name'];
    $size=$_FILES[$fileField]['size'];
    $error=$_FILES[$fileField]['error'];
    if(is_Array($name)){
    $errors=array();
    for($i=0; $i<count($name); $i++){
    if($this->setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){
    if(!$this->checkFileSize() || !$this->checkFileType()){
    $errors[]=$this->getError();
    $return=false;
    }
    }else{
    $error[]=$this->getError();
    $return=false;
    }
    if(!$return)
    $this->setFiles();
    }
    if($return){
    $fileNames=array();
    for($i=0; $i<count($name); $i++){
    if($this->setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){
    $this->setNewFileName();
    if(!$this->copyFile()){
    $errors=$this->getError();
    $return=false;
    }else{
    $fileNames[]=$this->newFileName;
    }
    }
    }
    $this->newFileName=$fileNames;
    }
    $this->errorMess=$errors;
    return $return;
    } else {
    if($this->setFiles($name, $tmp_name, $size, $error)){
    if($this->checkFileSize() && $this->checkFileType()){
    $this->setNewFileName();
    if($this->copyFile()){
    return true;
    }else{
    $return=false;
    }
    }else{
    $return=false;
    }
    }else{
    $return=false;
    }
    if(!$return)
    $this->errorMess=$this->getError();
    return $return;
    }
    }
    private function copyFile(){
    if(!$this->errorNum){
    $filepath=rtrim($this->filepath, '/').'/';
    $filepath.=$this->newFileName;
    if(@move_uploaded_file($this->tmpFileName, $filepath)) {
    return true;
    }else{
    $this->setOption('errorNum', -3);
    return false;
    }
    }else{
    return false;
    }
    }
    //设置和$_FILES有关的内容
    private function setFiles($name="", $tmp_name='', $size=0, $error=0){
    $this->setOption('errorNum', $error);
    if($error){
    return false;
    }
    $this->setOption('originName', $name);
    $this->setOption('tmpFileName', $tmp_name);
    $arrStr=explode('.', $name);
    $this->setOption('fileType', strtolower($arrStr[count($arrStr)-1]));
    $this->setOption('fileSize', $size);
    return true;
    }
    //用于获取上传后文件的文件名
    function getNewFileName(){
    return $this->newFileName;
    }
    //上传如果失败,则调用这个方法,就可以查看错误报告
    function getErrorMsg() {
    return $this->errorMess;
    }
    }
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/23 0:52:18