上傳類使用ORG類庫包中的Net.UpdateFile類,最新版本的上傳類包含的功能如下,有些功能需要結合ThinkPHP系統其他類庫.
1.基本上傳功能
2.支持批量上傳
3.支持生成圖片縮略圖
4. 自定義參數上傳
5.上傳檢測(包括大小、后綴和類型)
6.支持上傳類型、附件大小、上傳路徑定義
7.支持哈希或者日期子目錄保存上傳文件
8.上傳圖片的安全性檢測
9.支持上傳文件命名規則
10. 支持對上傳文件的Hash驗證
在ThinkPHP中使用上傳功能無需進行特別處理,例如,下面是一個帶有附件上傳的表單提交,代碼如下:
- <form METHOD=POST action=“/Manual/upload” enctype=“multipart/form-data” >
- <input type=“text” NAME=“name” >
- <input type=“text” NAME=“email” >
- <input type=“file” name=“photo” >
- <input type=“submit” value=“保 存” >
- </form>
注意表單的Form標簽中一定要添加 enctype=”multipart/form-data” 文件才能上傳,因為表單提交到當前模塊的upload操作方法,所以我們在模塊類里面添加下面的upload方法即可,代碼如下:
- 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{ // 上傳成功 獲取上傳文件信息
- $info = $upload->getUploadFileInfo();
- }
- // 保存表單數據 包括附件數據
- $User = M(“User”); // 實例化User對象Vevb.com
- $User->create(); // 創建數據對象
- $User->photo = $info[0]["savename"]; // 保存上傳的照片 根據需要自行組裝
- $User->add(); // 寫入用戶數據到數據庫
- $this->success(“數據保存成功!”);
- }
首先是實例化上傳類,代碼如下:
import(“ORG.Net.UploadFile”);
$upload = new UploadFile(); // 實例化上傳類
實例化上傳類之后,就可以設置一些上傳的屬性(參數),支持的屬性有:
maxSize:文件上傳的最大文件大?。ㄒ宰止潪閱挝唬┠J為-1 不限大小
savePath:文件保存路徑,如果留空會取UPLOAD_PATH常量定義的路徑
saveRule:上傳文件的保存規則,必須是一個無需任何參數的函數名,例如可以是 time、 uniqid com_create_guid 等,但必須能保證生成的文件名是唯一的,默認是uniqid
hashType:上傳文件的哈希驗證方法,默認是md5_file
autoCheck:是否自動檢測附件,默認為自動檢測
uploadReplace:存在同名文件是否是覆蓋
allowExts:允許上傳的文件后綴(留空為不限制),使用數組設置,默認為空數組
allowTypes:允許上傳的文件類型(留空為不限制),使用數組設置,默認為空數組
thumb:是否需要對圖片文件進行縮略圖處理,默認為false
thumbMaxWidth:縮略圖的最大寬度,多個使用逗號分隔
thumbMaxHeight:縮略圖的最大高度,多個使用逗號分隔
thumbPrefix:縮略圖的文件前綴,默認為thumb_(如果你設置了多個縮略圖大小的話,請在此設置多個前綴).
thumbSuffix:縮略圖的文件后綴,默認為空(如果你設置了多個縮略圖大小的話,請在此設置多個后綴).
thumbPath:縮略圖的保存路徑,留空的話取文件上傳目錄本身
thumbFile:指定縮略圖的文件名
thumbRemoveOrigin:生成縮略圖后是否刪除原圖
autoSub:是否使用子目錄保存上傳文件
subType:子目錄創建方式,默認為hash,可以設置為hash或者date
dateFormat:子目錄方式為date的時候指定日期格式
hashLevel:子目錄保存的層次,默認為一層
以上屬性都可以直接設置,例如如下代碼:
- $upload->thumb = true
- $upload->thumbMaxWidth = “50,200″
- $upload->thumbMaxHeight = “50,200″
其中生成縮略圖功能需要Image類的支持.
設置好上傳的參數后,就可以調用 UploadFile類的upload方法進行附件上傳,如果失敗,返回false,并且用getErrorMsg方法獲取錯誤提示信息,如果上傳成功,可以通過調用getUploadFileInfo方法獲取成功上傳的附件信息列表,因此getUploadFileInfo方法的返回值是一個數組,其中 的每個元素就是上傳的附件信息,每個附件信息又是一個記錄了下面信息的數組,包括:
key:附件上傳的表單名稱
savepath:上傳文件的保存路徑
name:上傳文件的原始名稱
savename:上傳文件的保存名稱
size:上傳文件的大小
type:上傳文件的MIME類型
extension:上傳文件的后綴類型
hash:上傳文件的哈希驗證字符串
文件上傳成功后,就可以通過這些附件信息來進行其他的數據存取操作,例如保存到當前數據表或者單獨的附件數據表都可以.
如果需要使用多個文件上傳,只需要修改表單,把XML/HTML代碼,如下:
<input type=“file” name=“photo”>
改為,XML/HTML代碼,如下:
- <input type=“file” name=“photo1″>
- <input type=“file” name=“photo2″>
- <input type=“file” name=“photo3″>
- //或者,PHP代碼
- <input type=“file” name=“photo[]“ >
- <input type=“file” name=“photo[]“ >
- <input type=“file” name=“photo[]“ >
兩種方式的多附件上傳系統的文件上傳類都可以自動識別.
新聞熱點
疑難解答
圖片精選