文章出處

一. 上傳表單

在 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('上傳成功!'); 輸出文件信息。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()