溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP文件上傳類

發(fā)布時間:2020-07-27 13:19:02 來源:網絡 閱讀:906 作者:woaijorden 欄目:web開發(fā)
class Upload{

    //錯誤信息
    private $errorNo;
    private $errorMsg;
    //文件類型
    private $ext;
    //允許的文件類型
    private $allowExt;
    //文件的大小
    private $size;
    //允許的文件大小
    private $allowSize;
    //存放圖片的主文件名稱
    private $dir;
    //子文件夾名稱
    private $dirSec;
    //臨時文件名
    private $tmpName;
    //分隔符
    const DS = DIRECTORY_SEPARATOR;

    public function __construct($file,$dir='upload',$allowExt=['jpg','jpeg','gif','png'],$allowSize = 2097152){
        $this->errorNo = $file['error'];
        $this->ext = $file['name'];
        $this->size = $file['size'];
        $this->tmpName=$file['tmp_name'];
        $this->dir = $dir;
        $this->allowExt=$allowExt;
        $this->allowSize=$allowSize;
    }

    public function UpLoad(){
        if(!$this->checkFile()){
            return $this->errorMsg;
        }

        if(!$this->createDir()){
            return $this->errorMsg;
        };
        echo $this->moveFile();
    }

    private function checkFile(){
        if(!$this->checkError()){
            $this->errorMsg='文件錯誤,無法上傳!';
            return false;
        }
        if(!$this->checkExt()){
            $this->errorMsg='不是圖片,無法上傳!';
            return false;
        }
        if(!$this->checkSize()){
            $this->errorMsg='文件超過指定大小,無法上傳';
            return false;
        }

        return true;
    }

    //檢查文件錯誤
    private function checkError(){
        if($this->errorNo!=0){
            return false;
        }
        return true;
    }

    //檢查文件類型
    private function checkExt(){
        if(!in_array(pathinfo($this->ext)['extension'],$this->allowExt)){
            return false;
        }
        return true;
    }

    //檢查文件大小
    private function checkSize(){
        if($this->size > $this->allowSize){
            return false;
        }
        return true;
    }

    //創(chuàng)建文件夾
    private function createDir(){
        $this->dirSec = $this->dir.self::DS.date('Y-m-d');
        if(!file_exists($this->dir)){
            if(!(mkdir($this->dir) && mkdir($this->dirSec))){
                $this->errorMsg='主目錄創(chuàng)建失敗';
                return false;
            }
        }elseif(!file_exists($this->dirSec)){
            if(!mkdir($this->dirSec)){
                $this->errorMsg='子目錄創(chuàng)建失敗';
                return false;
            }
        }
        return true;
    }

    //移動文件
    private function moveFile(){
        $imgName = date('YmdHis').'_'.mt_rand(10000,99999);
        move_uploaded_file($this->tmpName,$this->dirSec.self::DS.$imgName.'.'.pathinfo($this->ext)['extension']);
        return $this->dirSec.self::DS.$imgName.'.'.pathinfo($this->ext)['extension'];
    }
}

自己寫了一個,拿去直接用
$file = $_FILES['img'];

//new Upload(獲取的文件信息,上傳的文件夾,允許的文件類型,允許的文件大小);
$upload = new Upload($file,'upload',['gif','png','jpg','jpeg'],444444444);
$upload->UpLoad();

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI