溫馨提示×

溫馨提示×

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

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

封裝ThinkPHP的一個(gè)文件上傳方法

發(fā)布時(shí)間:2021-07-02 16:28:24 來源:億速云 閱讀:122 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“封裝ThinkPHP的一個(gè)文件上傳方法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“封裝ThinkPHP的一個(gè)文件上傳方法”吧!

這陣子,對WBlog的上傳功能作了優(yōu)化。改進(jìn)后的上傳功能可以實(shí)現(xiàn)縮略圖上傳,圖片上傳,生成水印,文件上傳,并且可以在后臺對上傳的附件進(jìn)行大?。ㄎ募笮。?,類型(文件類型),水?。ㄡ槍D片)的進(jìn)行設(shè)置。此外還可以對上傳的文件進(jìn)行分類保存到相應(yīng)的文件夾里,方便管理。

下面是對改進(jìn)后的上傳功能作簡約的說明。

縮略圖上傳

先前的縮略圖上傳功能使用了KindEditor的上傳組件,除非上傳之前對圖片進(jìn)行縮略處理,不然上傳的是原圖,改進(jìn)后的上傳功能可以通過系統(tǒng)對縮略圖的大小進(jìn)行設(shè)置,不管你上傳的原圖有多大,都會生成設(shè)置的大小的圖片,并且自動(dòng)刪除原圖,有效地減少垃圾信息的累積。上傳的縮略圖自動(dòng)保存到Thumb文件夾

圖片上傳

上傳圖片,可以根據(jù)需要設(shè)置圖片的大小、上傳圖片的類型和添加水印。

文件上傳

如壓縮文件,文檔文件等,可根據(jù)需要添加上傳文件類型和大小。

添加水印

對上傳的圖片添加水印。

上面的上傳功能我把它封裝在模型類AttachModel.class.php里,用兩個(gè)方法搞定:

復(fù)制代碼 代碼如下:


/**     
    * 附件上傳:上傳圖片,縮略圖,文件     
    * @param string $model 上傳所在模塊     
    * @param bool $type 上傳文件的類型::image(圖片);thumb(縮略圖);file(文件)     
    */
            
public function upload($model = null, $type = 'image'){     
       //導(dǎo)入上傳類     
       import('ORG.NET.UploadFile');     
       $upload = new UploadFile();     
       $upload->saveRule = 'uniqid'; //設(shè)置上傳文件規(guī)則     
       $upload->maxSize = C('MAXSIZE')*1024*1024;   //上傳文件大小         
       $upload->allowExts = explode(',', C('ALLOWEXTS'));//文件類型     
               
       if ($model){     
           $upload->savePath = './Public/Uploads/'.$model.'/';     
           if (!file_exists($upload->savePath)) {     
             mkdir($upload->savePath);     
           }     
       }else{     
           $upload->savePath = './Public/Uploads/Thumb/';     
           if (!file_exists($upload->savePath)) {     
             mkdir($upload->savePath);     
           }     
       }     
       if (in_array($type,array('image','thumb'))){     
           $upload->thumb = true;     
           $upload->thumbRemoveOrigin  = true;// //刪除原圖     
           $upload->thumbPrefix = 'wb_';         
           $upload->thumbMaxWidth = $type=='thumb' ? C('THUMB_W') :C('IMAGE_W');//縮略圖寬度     
           $upload->thumbMaxHeight = $type=='thumb' ? C('THUMB_H') :C('IMAGE_H');//縮略圖高度         
                           
       }     
       if (!$upload->upload()) {     
           return $upload->getErrorMsg();     
       }else{     
           $uploadlist = $upload->getUploadFileInfo();     
           if(C('ISWATER') && $type=='image'){     
             import('ORG.Util.Image');     
             //給m_縮略圖添加水印, Image::water('原文件名','水印圖片地址')     
             foreach ($uploadlist as $key => $value){     
               Image::water($value['savepath'] . 'wb_' . $value['savename'], './Public/admin/images/water.png');     
            }     
           }     
       }     
       if (in_array($type,array('image','file'))){     
           return $this->_add($uploadlist,$model);     
       }else{     
           return $uploadlist[0]['savename'];//返回縮略圖保存名稱     
       }            
   }     
   /*     
    * 上傳的附件整合成attach所需數(shù)據(jù),存入表并返回?cái)?shù)組     
    * */
   private function _add($uploadlist,$module=''){     
       //$j = count($uploadlist);     
       $v = array();     
       foreach ($uploadlist as $key => $value){     
                   
           $v[$key]['name']        =   $value['name'];     
           $v[$key]['savename']    =   $value['savename'];     
           $v[$key]['savepath']    =   substr($value['savepath'], 2);     
           $v[$key]['size']        =   $value['size'];     
           $v[$key]['userId']      =   $_SESSION[C('USER_AUTH_KEY')];     
           $v[$key]['uploadTime']  =   time();     
           $v[$key]['alt']                 =   $_POST['alt'][$key];     
           $v[$key]['module']          =   $_POST['module'];//當(dāng)前項(xiàng)目路徑      
           $v[$key]['recordId']    =   $_POST['recordId'];//當(dāng)前項(xiàng)目路徑      
           $this->add($v[$key]);     
           if($this->thumb){     
                       
               $v[$key]['prefix']      =   $this->thumbPrefix;                   
           }     
           $v[$key]['id'] = M('Attach')->getLastInsID();                 
       }     
       return $v;     
}

感謝各位的閱讀,以上就是“封裝ThinkPHP的一個(gè)文件上傳方法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對封裝ThinkPHP的一個(gè)文件上傳方法這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

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

AI