上傳類使用ORG類庫包中的Net.UpdateFile類,最新版本的上傳類包含的功能如下(有些功能需要結合ThinkPHP系統其他類庫):
1.基本上傳功能
2.支持批量上傳
3.支持生成圖片縮略圖
4. 自定義參數上傳
5.上傳檢測(包括大小、後綴和類型)
6.支持上傳類型、附件大小、上傳路徑定義
7.支持哈希或者日期子目錄保存上傳文件
8.上傳圖片的安全性檢測
9.支持上傳文件命名規則
10. 支持對上傳文件的Hash驗證
在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交:
注意表單的Form標簽中一定要添加 enctype=”multipart/form-data” 文件才能上傳。因為表單提交到當前模塊的upload操作方法,所以我們在模塊類裡面添加下面的upload方法即可:
代碼如下 復制代碼 Public function upload(){
首先是實例化上傳類
代碼如下 復制代碼 import(“ORG.Net.UploadFile”);
實例化上傳類之後,就可以設置一些上傳的屬性(參數),支持的屬性有:
maxSize: 文件上傳的最大文件大小(以字節為單位)默認為-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
其中生成縮略圖功能需要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[]“ >
兩種方式的多附件上傳系統的文件上傳類都可以自動識別。