上傳表單
上傳表單無需特別處理,下面是一個最簡單的單檔案上傳表單:
注意,表單必須添加enctype="multipart/form-data"屬性才能支援檔案上傳功能。
| 代碼如下 |
複製代碼 |
|
<form id="upload" method='post' action="__URL__/upload/" enctype="multipart/form-data">
<input name="image" type="file" />
<input type="submit" value="提交" >
</form>
|
上傳操作
接下來就是定義上傳操作了,我們在Action控制器中添加upload操作方法如下:
要使用上傳功能,首先第一步就是執行個體化上傳類:
| 代碼如下 |
複製代碼 |
|
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 執行個體化上傳類
//參數設定
//設定附件上傳目錄
$upload->savePath = './Uploads/';
//設定需要產生縮圖,僅對影像檔有效
$upload->thumb = true;
//設定需要產生縮圖的檔案尾碼
$upload->thumbPrefix = 'm_,s_'; //生產2張縮圖
//設定縮圖最大寬度
$upload->thumbMaxWidth = '200,50';
//設定縮圖最大高度
$upload->thumbMaxHeight = '200,50';
//檔案上傳代碼
public function upload() {
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 執行個體化上傳類
$upload->maxSize = 3145728 ;// 設定附件上傳大小
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳類型
$upload->savePath = './Public/Uploads/';// 設定附件上傳目錄
if(!$upload->upload()) {// 上傳錯誤提示錯誤資訊
$this->error($upload->getErrorMsg());
}else{// 上傳成功
$this->success('上傳成功!');
}
} |
注意只支援php檔案哦,其它類型的檔案會提示非法檔案的。
上面講到的是單檔案上傳,如果要多檔案上傳我們只要簡單的對錶單進行處理
多檔案上傳
表單如下寫法
| 代碼如下 |
複製代碼 |
|
<input type='file' name='image1'>
<input type='file' name='image2'>
<input type='file' name='image3'>
或者像原生態php多檔案上傳的寫法
<input type='file' name='image[]'>
<input type='file' name='image[]'>
<input type='file' name='image[]'> |
php處理方法還是單檔案上傳的沒什麼變化
| 代碼如下 |
複製代碼 |
|
import("ORG.Net.UploadFile");
$upload = new UploadFile();
foreach ($_FILES as $key=>$file){
if(!empty($file['name'])) {
$upload->autoSub = true;
$upload->subType = 'date';
$info = $upload->uploadOne($file);
if($info){ // 儲存附件資訊
M('Photo')->add($info);
}else{ // 上傳錯誤
$this->error($upload->getErrorMsg());
}
}
} |
最新版本的上傳類包含的功能如下(有些功能需要結合ThinkPHP系統其他類庫):
基本上傳功能
支援批量上傳
支援產生圖片縮圖
自訂參數上傳
上傳檢測(包括大小、尾碼和類型)
支援覆蓋方式上傳
支援上傳類型、附件大小、上傳路徑定義
支援雜湊或者日期子目錄儲存上傳檔案
支援動態定義子目錄儲存檔案
上傳圖片的安全性檢測
支援上傳檔案命名規則
支援對上傳檔案的Hash驗證