知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

php之文件上传类代码

发布时间:2015-05-27 19:30:34作者:知识屋

[php] 
/*   
单个文件上传   
   
功能   
上传文件   
配置允许的后缀   
配置允许的大小   
   
获取文件后缀   
判断文件的后缀   
报错   
*/    
class UpTool{    
    protected $allowExt = 'jpg,jpeg,gif,bmp,png';    
    protected $maxSize = 1; //1M ,以M为单位    
    
    protected $file = null; //准备储存上传文件信息    
    protected $errno = 0;  //错误代码    
    protected $error = array(    
            0=>'无错',    
            1=>'上传文件大小超出系统限制',    
            2=>'上传文件的大小超出网页表单限制',    
            3=>'文件只有部分被上传',    
            4=>'没有文件被上传',    
            6=>'找不到临时文件夹',    
            7=>'文件写入失败',    
            8=>'不允许的文件后缀',    
            9=>'文件大小超出类的允许范围',    
            10=>'创建目录失败',    
            11=>'文件移动失败'    
        );    
    
    /*   
    上传   
    */    
    public function up($key) {    
        if (!isset($_FILES[$key])) {    
            return false;    
        }    
        $f = $_FILES[$key];    
    
        //检验上传是否成功    
        if ($f['error']) {    
            $this->errno = $f['error'];    
            return false;    
        }    
    
        //获取后缀    
        $ext = $this->getExt($f['name']);    
        //检查后缀    
        if (!$this->isAllowExt($ext)) {    
            $this->errno = 8;    
            return false;    
        }    
        //检查大小    
        if (!$this->isAllowSize($f['size'])) {    
            $this->errno = 9;    
            return false;    
        }    
        //创建目录    
        $dir = $this->mk_dir();    
        if ($dir == false) {    
            $this->errno = 10;    
            return fasle;    
        }    
    
        //生成随机文件名    
        $newname = $this->randName() . '.' .$ext;    
        //$dir = $dir . '/' .$newname;    
        //移动    
        if(!move_uploaded_file($f['tmp_name'], $dir . '/' .$newname)) {    
            $this->errno = 11;    
            return false;    
        }    
        return true;//str_replace(ROOT, '', $dir);    
    }    
    
    public function getErr(){    
        return $this->error[$this->errno];    
    }    
    
    /*   
    parm string $exts 允许的后缀   
    自动添加 允许的后缀,和文件的大小   
    */    
    public function setExt($exts) {    
        $this->allowExt = $exts;    
    }    
    public function setSize($num) {    
        $this->maxSize = $num;    
    }    
    
    
    /*   
        string $file   
    return string $ext 后缀    
    */    
    
    protected function getExt($file) {    
        $tmp = explode('.', $file);    
        return end($tmp);    
    }    
    /*   
    string $ext 文件后缀   
    return bool   
    防止大小写的问题   
    */    
    protected function isAllowExt($ext) {    
        return in_array(strtolower($ext), explode(',', strtolower($this->allowExt))) ;    
            
    }    
    
    /*   
        检查文件的大小   
    */    
    protected function isAllowSize($size) {    
        return $size <= $this->maxSize *1024*1024;    
    }    
    //按日期创建目录的方法    
    protected function mk_dir() {    
        $dir = 'images/' . date('Ym/d');    
        if(is_dir($dir) || mkdir($dir,0777,true)) {    
            return $dir;    
        } else {    
            return false;    
        }    
    }    
    
    /*   
        生成随机文件名   
    */    
    protected function randName($length = 6) {    
        $str = 'abcdefghijkmnpqrstuvwxyz23456789';    
        return substr(str_shuffle($str),0,$length);    
    }    
    
}  
form 表单
[html]  
<form action="up.php" method="post" enctype="multipart/form-data">    
    用户名:<input type="text" name="username" /> <br/>    
    头像:   <input type="file" name="pic" />    
    <input type="submit" value="提交" />    
</form>  
 
另起页面调用
 
[php]  
require('./UpTool.class.php');    
    
$uptool = new UpTool();    
$uptool->setExt('rar,doc');    
$uptool->setSize(1);    
    
    
if ($uptool->up('pic')) {    
    echo '上传成功';    
} else {    
    echo '失败';    
    echo $uptool->getErr();    
}  
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜