文章出處
文章列表
一. 上傳表單
在 WeiBo/Home/View/User/index.html 里寫入以下代碼:
1 <!--上傳單個文件的表單模式--> 2 <form action="__CONTROLLER__/upload" enctype="multipart/form-data" method="post"> 3 <input type="file" name="photo" /> 4 <input type="submit" value="提交"/> 5 </form>
在 WeiBo/Home/Controller/UserController.class.php 中的代碼為:
1 <?php 2 3 namespace Home\Controller; 4 use Think\Controller; 5 use Think\Upload; 6 7 class UserController extends Controller { 8 public function index() { 9 $this->display(); 10 } 11 public function upload() { 12 $upload=new Upload(); //實例化上傳類 13 $upload->maxSize=3145728; //設置上傳大小,字節 14 $upload->exts=array('jpg','gif','png','jpeg'); //限定后綴 15 $upload->savePath='./'; //在根目錄Uploads下 16 $info=$upload->upload(); //執行上傳方法 17 if(!$info) { 18 $this->error($upload->getError()); 19 }else { 20 $this->success('上傳成功'); 21 } 22 } 23 }
注:上傳文件需引用 Think/Upload 此時在demo39下新建uploads文件,與WeiBo同級,否則會在上傳時出現警告: 上傳根目錄不存在!請嘗試手動創建:./Uploads/
二.文件上傳
在上傳操作之前,我們可以對上傳的屬性進行一些設置,Upload 類支持的屬性:
參數 | 描述 |
maxSize | 文件上傳的最大文件大小(以字節為單位),0為不限大小 |
rootPath | 文件上傳保存的根路徑 |
savePath | 文件上傳的保存路徑(相對于根路徑) |
saveName | 上傳文件的保存規則,支持數組和字符串方式定義 |
saveExt | 上傳文件的保存后綴,不設置的話使用原文件后綴 |
replace | 存在同名文件是否是覆蓋,默認為 false |
exts |
允許上傳的文件后綴(留空為不限制),使用數組或者逗號分隔 |
mimes |
允許上傳的文件類型(留空為不限制),使用數組或者逗號分隔 |
autoSub | 自動使用子目錄保存上傳文件 默認為 true |
subName | 子目錄創建方式,采用數組或者字符串方式定義 |
hash | 是否生成文件的 hash 編碼 默認為 true |
callback | 檢測文件是否存在回調,如果存在返回文件信息數組 |
1 //實例化配置參數 2 $config = array( 3 'maxSize'=>3145728, 4 'exts'=> array('jpg','gif','png','jpeg'), 5 'savePath'=>'./', 6 ); 7 $upload = new Upload($config);
1 //動態配置參數 2 $upload = new Upload(); 3 $upload->maxSize = 3145728; 4 $upload->exts = array('jpg','gif','png','jpeg'); 5 $upload->savePath = './';
配置參數是可使用以上兩種配置方法
一下是一些配置的具體參數:
1 //設置文件名 2 $upload->saveName = '123';
1 //限制上傳文件類型 2 $upload->mimes = array('image/jpeg');
1 //設置同名覆蓋 2 $upload->replace = true;
1 //不設置子目錄 2 $upload->autoSub = false;
1 //設置子目錄格式 2 $upload->subName = array('date','Ymd');
1 //不生成hash編碼 2 $upload->hash = false;
//子目錄采用函數返回 $upload->subName = 'get_user_id'; //在 WeiBo/Common/Common/function.php 中創建一個函數 function get_user_id() { return rand(); }
1 //獲取上傳文件信息 2 foreach ($info s as $file) { 3 echo $file['savepath'].$file['savename']; 4 }
$file 數組可以使用的屬性
屬性 | 描述 |
key | 附件上傳的表單名稱 |
savepath | 上傳文件的保存路徑 |
name | 上傳文件的原始名稱 |
savename | 上傳文件的保存名稱 |
size | 上傳文件的大小 |
type | 上傳文件的 MIME 類型 |
ext | 上傳文件的后綴類型 |
md5 | 上傳文件的 md5哈希驗證字符串 僅當 hash 設置開啟后有效 |
sha1 | 上傳文件的 sha1哈希驗證字符串 僅當 hash 設置開啟后有效 |
1 foreach ($info as $file) { 2 echo $file['key'].'<br />'; 3 echo $file['savepath'].'<br />'; 4 echo $file['name'].'<br />'; 5 echo $file['savename'].'<br />'; 6 echo $file['size'].'<br />'; 7 echo $file['type'].'<br />'; 8 echo $file['ext'].'<br />'; 9 echo $file['md5'].'<br />'; 10 echo $file['sha1'].'<br />'; 11 }
可在判定上傳文件成功后 $this->success('上傳成功!'); 輸出文件信息。
文章列表
全站熱搜