單文件上傳 - ThinkPHP 3.2

本文主要摘自官方ThinkPHP3.2徹底開發手冊中文件上傳這一小節的內容。
ThinkPHP文件上傳操做使用Think\Upload 類,假設前面的表單提交到當前控制器的upload方法,下面是upload方法的簡便實現代碼:
 1 public function upload(){
 2     $upload = new \Think\Upload();// 實例化上傳類
 3     $upload->maxSize = 3145728 ;// 設置附件上傳大小
 4     $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類 型 
 5     $upload->savePath = './Public/Uploads/'; // 設置附件上傳目錄
 6     // 上傳文件
 7     $info = $upload->upload();
 8     if(!$info) {// 上傳錯誤提示錯誤信息
 9         $this->error($upload->getError());
10     }else{// 上傳成功
11         $this->success('上傳成功!');
12     }
13 }

 

除上述對Upload類進行動態賦值外,還能夠利用數組對Upload類進行實例化傳入賦值,以下所示:
1 $config = array(
2     'maxSize' => 3145728,
3     'savePath' => './Public/Uploads/',
4     'saveName' => array('uniqid',''),
5     'exts' => array('jpg', 'gif', 'png', 'jpeg'),
6     'autoSub' => true,
7     'subName' => array('date','Ymd'),
8  );
9 $upload = new \Think\Upload($config);// 實例化上傳類

 

下表是Upload類支持的屬性:
屬性
描述
maxSize
int,默認0,文件上傳的最大文件大小(以字節爲單位),0爲不限大小
rootPath
String,文件上傳保存的根目錄
savePath
String,文件上傳保存的目錄(相對於根目錄)
saveName
String or Array,上傳文件的保存規則,支持數組和字符串方式定義
saveExt String,上傳文件的保存後綴,默認爲使用原文件後綴
replace
boolean,默認false,是否覆蓋同名文件
exts
String or Array,默認爲空,容許上傳的文件後綴(留空爲不限制),使用數組或者逗號分隔的字符串
mimes
String or Array,默認爲空,容許上傳的文件類型(留空爲不限制),使用數組或者逗號分隔的字符串
autoSub
boolean,默認爲true,自動使用子目錄保存文件,默認爲true
subName
String or Array,子目錄建立方式,採用數組或者字符串方式定義
hash
boolean,默認爲true,是否生成文件的hash編碼
callback
檢測文件是否存在回調,若是存在返回文件信息數組

返回上傳以後的操做結果數組

設置好上傳的參數後,就能夠調用Think\Upload 類的upload方法進行附件上傳,若是失敗,返回 false,而且用getError方法獲取錯誤提示信息;若是上傳成功,就返回成功上傳的文件信息數組。
 1 public function upload(){
 2   $upload = new \Think\Upload();// 實例化上傳類
 3       $upload->maxSize = 3145728 ;// 設置附件上傳大小
 4       $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
 5       $upload->savePath = './Public/Uploads/'; // 設置附件上傳目錄
 6       // 上傳文件
 7       $info = $upload->upload();
 8       if(!$info) {// 上傳錯誤提示錯誤信息
 9         $this->error($upload->getError());
10       }else{// 上傳成功 獲取上傳文件信息
11         foreach($info as $file){
12               echo $file['savepath'].$file['savename'];
13             }
14   }
15 }

 

每一個文件信息記錄了與上傳文件相關的信息的數組,包括:
屬性
描述
key
附件上傳的表單名稱
savePath
上傳文件的保存路徑
name
上傳文件的原始名稱
savename
上傳文件的保存名稱
size
上傳文件的大小
type
上傳文件的MIME類型
ext
上傳文件的後綴類型
md5
上傳文件的md5哈希驗證字符串,僅當hash設置開啓後有效
sha1
上傳文件的sha1哈希驗證字符串,僅當hash設置開啓後有效
相關文章
相關標籤/搜索