時間:2014年4月4日16:27:18 文件上傳類


幾個比較重要的類:

文件上傳類:

分頁類:

購物車類:

圖片處理類:

過濾數據類:

創建工具類: tool

<?php

/**

*  Created by PhpStorm.

*  User: Administrator

*  Date: 14-4-4

*  Time: 下午4:31

*/

/*

* 單文件上傳類*/

defined('ACC') || exit('ACC Denied');

/*

* 文件上傳:

* 配置允許的後綴

* 配置允許大小

* 隨機生成目錄

* 隨機生成文件名

* 獲取文件後綴

* 判斷文件後綴

* 良好的報錯支持*/


class UpTool{

    protected  $allow_ext =  'jpg,jpeg,gif,bmp,png'; // 允許上傳文件的類型

    protected  $maxSize = 1;// 文件最大上傳的大小

    protected  $file = null;//存儲上傳文件的信息

    protected  $errno = 0;

    protected  $error = array(

        0=>'無錯',

        1=>'上傳文件大小超出系統限制',

        2=>'上傳文件大小超出網頁表單限制',

        3=>'文件只有部分被上傳',

        4=>'沒有文件被上傳',

        6=>'找不到臨時文件夾',

        7=>'文件寫入失敗',

        8=>'不允許的文件類型',

        9=>'文件大小超出允許範圍',

        10=>'創建目錄失敗',

        11=>'文件移動失敗'

    );


    /*獲取文件信息*/

    protected  function  getFile($key){

        //獲取文件屬性

        $this->file = $_FILES[$key];

    }

    /*文件上傳*/

    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 false;

        }

        //生成隨機文件名

        $newName = $this->randName().'.'.$ext;

        //移動文件


        if(move_uploaded_file($f['tmp_name'],$dir.'/'.$newName)){

           return $dir.'/'.$newName ;

        }else{

           $this->errno = 11;

           return false;

        }

    }

    /*獲取錯誤信息*/

   public   function  getErr(){

        return $this->error[$this->errno];

    }

    /*獲取文件的後綴名

    param string $file

    return string $ext 後綴名*/

    protected  function  getExt($file){

        $tmp = explode('.',$file);

        $ext =end($tmp) ;

        return $ext;

    }


    /*判斷是否允許傳遞的後綴名,要防止大小寫問題

    param string $ext 文件後綴

    return bool 是否允許上傳*/

    protected  function  isAllowExt($ext){

        return  in_array(strtolower($ext),explode(',',strtolower($this->allow_ext)));

    }

    /*判斷文件大小是否在允許範圍內 */

    protected function   isAllowSize($size){

        return $size<= $this->maxSize*1024*1024;

    }

    //按日期創建目錄

    protected  function mk_dir(){

        $dir =ROOT.'data/p_w_picpaths/'. date('ym/d',time());

        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);

    }


}




測試頁面:

<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>

    <meta http-equiv="Content-Type"  content="text/html;charset=UTF-8">

    <title>Document</title>

</head>

<body>

<form action="test.php"  method="POST" enctype="multipart/form-data">

用戶名:  <input type="text" name="username"/><br/>

頭像:<input  type="file" name="pic"/><br/>

    <input type="submit"   value="提交"/>

</form>

</body>

</html>

測試代碼:

define('ACC',true);

require('include/init.php');

require(ROOT.'tool/UpTool.class.php');


$up = new UpTool();

if($res = $up->up('pic')){

    echo 'OK';

    echo $res;

}else{

    echo 'FAIL<br/>';

    echo $up->getErr();

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章