程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 轉載-ThinkPHP文件上傳類的分享

轉載-ThinkPHP文件上傳類的分享

編輯:關於PHP編程

上傳類使用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對象
$User->create(); // 創建數據對象
$User->photo = $info[0]["savename"]; // 保存上傳的照片 根據需要自行組裝
$User->add(); // 寫入用戶數據到數據庫
$this->success(“數據保存成功!”);
}

 

首先是實例化上傳類

 代碼如下 復制代碼 import(“ORG.Net.UploadFile”);
$upload = new 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
$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[]“ >

兩種方式的多附件上傳系統的文件上傳類都可以自動識別。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved